Loading

《CMake Best Practice》第 2 章笔记--Accessing CMake in Best Ways

《CMake Best Practice》第 2 章笔记--Accessing CMake in

Best Ways

使用CMake CLI配置项目

向编译器传递编译选项

向C++编译器传递 -Wall-Werror 编译选项:

cmake -G "Unix Makefiles" -DCMAKE_CXX_FLAGS:STRING="-Wall
-Werror" - S . B ./build S . -B ./build

对于第 1 章中提到的四种构建类型,可以分别为每一种构建类型传递编译选项,使用下面四个变量:

CMAKE_<LANG>_FLAGS_DEBUG
CMAKE_<LANG>_FLAGS_RELEASE
CMAKE_<LANG>_FLAGS_RELWITHDEBINFO
CMAKE_<LANG>_FLAGS_MINSIZEREL

列出已缓存的变量

cmake -L ./build/

使用上述命令可以列出已经缓存的变量。

cmake -LAH ./build/

使用上述命令可以得到已缓存的变量的更多的信息。

使用CMake CLI构建项目

cmake --build ./build

使用上述命令告诉 CMake 执行构建。

并行构建

使用 --parallel <job_count> 选项指定使用多线程执行构建过程。比如下面的命令,将使用 2 个线程执行构建。

cmake --build ./build --parallel 2

但是对于 Ninja 来说,它自己在构建项目时,会尽可能多的利用硬件的线程数。所以,当构建系统是 Ninja 时,不需要手动指定并行数。

Linux 系统上可以使用 nproc 查看硬件所支持的线程数。

因此,可以利用 nproc 命令来根据不同的硬件,动态的指定线程数:

cmake --build ./build/ --parallel $(($(nproc)-1))

仅构建特定目标

默认情况下,CMake 会构建所有的目标,可以通过 --target 选项手动指定想要构建的目标:

cmake --build ./build/ --target "ch2_framework_component1" --target "ch2_framework_component2"

在构建之前删除以前的构建组件

cmake --build ./build/ --clean-first

这类似于 make clean 命令。

调试构建过程

cmake --build ./build/ --verbose

--verbose 选项将显示构建过程的详细信息。

使用CMake CLI安装项目

只有在配置、构建过程执行完毕之后,才能执行安装命令:cmake --install <project_binary_dir>

Linux 系统下,默认的安装目录是 /usr/localWindows 下是 C:/Program Files

改变默认的安装目录

使用 --prefix 参数。

cmake --install ./build --prefix /tmp/example

仅安装特定组件

cmake --install build --component executables

扩展资料

posted @ 2022-07-16 16:37  cclemontree  阅读(495)  评论(0)    收藏  举报