CMake 学习二:CMake 外部构建

文章目录

CMake 外部构建

上一章 是 CMake 内部构建的例子,顾名思义,就是在当前工程目录中进行编译,但缺点是会产生很火的临时编译文件,容易污染工程,不方便清理。而外部构建就是把编译生成的文件统一放在一个的目录下,不会对源代码工程有任何影响,清理也只需删除这个编译目录。所以强烈推荐使用外部构建,外部构建的一般步骤如下:

# 1. 创建并进入编译目录
#    在项目根目录中新建一个 build/release/debug 目录,cmake 生成的中间文件都会放在此目录中
$ mkdir build
$ cd build/

# 2. 进行 cmake 编译
$ cmake ..
$ cmake --build .

# 3. 编译完后安装
$ cmake --install .

# 4. 更简单的是直接在 camke .. 之后执行 make,这于 2,3 等效
$ cmake ..
$ make && make install

外部构建时有两个变量需要注意:

  • PROJECT_BINARY_DIR 编译路径,也就是当前 build 目录;
  • PROJECT_SOURCE_DIR 还是工程中的源码目录。

它们在内部构建的工程中是一样的,但在外部构建的工程中就不一样。


常用 cmake 编译选项

# 指定安装路径,这是最常用的选项,类似 ./configure --prefix
-DCMAKE_INSTALL_PREFIX=$HOEM/.local

# 指定第三方库的路径,一般供 find_package|find_library|find_program 等命令搜索,
# 若第三方库安装在非标准目录中,则需要用此参数指定路径,也可以是一个分号分隔的路径列表,
# cmake 会在指定路径中查找第三方库的 cmake 文件,一般放在 lib|lib64 中的 cmake 目录中
-DCMAKE_PREFIX_PATH=$HOME/.local/grpc
-DCMAKE_PREFIX_PATH="/tmp;/tmp/grpc"

# 指定编译类型,Debug | Release,默认编译为 Relase 版本
-DCMAKE_BUILD_TYPE=Debug|Release

# 编译程序,等同于 make 命令
--build <dir>

# 安装程序,等同于 make install 命令
--install <dir>

# 指定编译平台,可以使用 cmake --help 查看本机支持的编译平台,一般在 Windows 上需要指定。
-G "Visual Studio 14 2015 Win64|MinGW Makefiles|..."

以上已 -D 开头的选项也可以在 CMakeLists.txt 文件中使用 set 或 list 命令添加,如下

set(CMAKE_PREFIX_PATH "<YOUR_ADDITIONAL_SEARCH_PATH>")
list(APPEND CMAKE_PREFIX_PATH "<YOUR_ADDITIONAL_SEARCH_PATH>")

一般使用 set 命令就行,如下实例

set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_PREFIX_PATH "/opt/local/grpc")
set(CMAKE_PREFIX_PATH "/opt/local/libevent")	# 多个搜索路径可以写多条
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值