文章目录
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") # 多个搜索路径可以写多条