CMake入门(一)

CMake入门(一)

Written with StackEdit.

CMake是什么

CMake是一个opensource的软件项目构建管理工具;它允许开发者用一种简单的文本格式进行构建参数的指定。

为什么使用CMake

如果你之前有过维护软件包的构建和安装的经验,你就会对CMake有兴趣。
当前很多项目都可以在Linux下用Makefile和在Windows下用Visual Studio进行编译;这要求开发者在对应的系统下保持构建工具的更新,并且不同系统的构建行为保持一致;如果再引入XCode,这需要更多的构建工具,这样会是一个问题。
如果在此基础上引入可选组件,比如如果系统上有libjpeg,项目就支援JPEG,这会造成更大的麻烦。
CMake提供了一个简单的,易于理解的文件格式来解决上述问题。

如果一个项目有多个开发者参与,或者这个项目有多个目标平台;那么不可避免的需要在多台PC上进行构建,不同的PC在开发环境上会有差异。

  • 自动进行项目构建所需的program、library、header file的查找能力;
  • 在source tree以外进行构建的能力;
  • 为Qt moc,SWIG等自动产生复杂的自定义命令的能力;
  • 在configuration阶段进行可选组件定制的能力;
  • 自动从简单文件文件产生workspace和project的能力;
  • 配置生成静态库/动态库的能力;
  • 自动产生文件依赖,支持并行编译;

CMake的基本语法

build的过程由每个目录下的名为CMakeFileLists.txt的文件组成的一系列文件列表所控制;
CMakeFileLists.txt文件由CMake语句进行项目描述,CMake语句的语法为:

command( args... )
  • command是命令的名字,CMake是不区分大小写的;
  • args是一系列由空格分隔的参数,如果参数中有空格,参数需要用双引号引起来;

变量被引用的格式是${VAR};
多个参数可以使用set来使之构成一个list

set( Foo a b c )

这样设置的结果是Foo的值是 a b c;

CMake可以直接访问系统环境变量和Windows注册表;
访问系统环境变量的语法:

$Env{ARG}

访问Windows注册表:

[HKEY_CURRENT_USER\\Software\\path1\\path2;key]

Hello World

一个简单的CMakeFileLists.txt的例子

project( Hello )
add_executalbe( Hello Hello.c )

一个稍微复杂的例子

cmake_minimum_required( 2.6 )
project( HELLO )

set( HELLO_SRCS Hello.c File2.c File3.c )
if( WIN32 )
    set( HELLO_SRCS ${HELLO_SRCS} WinSupport.c )
esle()
    set( HELLO_SRCS ${HELLO_SRCS} LinuxSupport.c )
endif()

add_executable( HELLO ${HELLO_SRCS} )

# look for the Tcl library
find_library( TCL_LIBRARY 
    NAMES tcl tcl84 tcl83 tcl82 tcl80
    PATHS /usr/lib /usr/local/lib
    )
if( TCL_LIBRARY )
    target_link_library( Hello ${TCL_LIBRARY} )
endif()

如何运行CMake

通常使用两种方式运行CMake

cmake-gui
通过桌面或者命令行运行cmake-gui,打开后UI如下:

cmake-gui
按照如下步骤进行设置:
1. 图示1, 选择source code所在位置(如果通过cmake-gui path_to_src的方式,source code位置已经设定好);
2. 图示2, 选择build要产生文件的存放位置;
3. 图示3,configure;如果是第一次执行configure,会弹出对话框让进行compiler的选择,指定toolchain file;这样设置以后,configure过程会进行,在图示4的区域显示相关option;
4. 图示4,进行相关参数或者option的设置;
5. 图示5,generate,产生指定平台的build file(Linux的Makefile或者Visual Studio的sln file);

命令行使用cmake
1. 切换到准备放置binary file的目录
2. cmake path_to_src -Doption
3. make
4. make install

CMake个跨平台的开源构建系统,它帮助开发者在多种操作系统上自动化软件项目的构建过程。以下是CMake入门些步骤和基本概念: 1. **安装CMake**:首先,你需要从CMake官网下载并安装适用于你的系统的版本。对于Windows、Mac OS和Linux都有预打包的二进制包可供选择。 2. **创建CMakeLists.txt**:这是CMake的核心,它是描述你的项目结构和依赖关系的文本文件。通常放在项目根目录下。 3. **配置生成器**:CMake支持多种构建系统,如Unix Makefiles、Visual Studio等。通过命令行指定`cmake -G`选项,告诉CMake你想要哪种生成器。 4. **生成构建文件**:运行`cmake`命令初始化CMake流程,生成对应的构建文件(如Makefile或Visual Studio解决方案文件)。 5. **构建项目**:根据选定的构建系统(如make或msbuild),运行`make`或`cmake --build .`命令来实际构建你的程序。 6. **添加变量和指令**:CMake提供了许多变量和函数,如设置源代码路径、添加库依赖、设置编译选项等,可以灵活调整构建配置。 7. **了解基本语法**:学习CMake的基本语法,如IF()条件语句、ADD_EXECUTABLE()添加可执行文件、INCLUDE()导入外部CMakeLists.txt等。 8. **实践项目**:通过参与些小型项目或者使用官方的示例来熟悉CMake的工作流程。 **相关问题--** 1. CMake有哪些常见的错误及其解决办法是什么? 2. 如何在CMakeLists.txt中处理不同平台的差异? 3. 怎样在已经存在的CMake项目中添加新的模块或依赖?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值