《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/local,Windows 下是 C:/Program Files 。
改变默认的安装目录
使用 --prefix 参数。
cmake --install ./build --prefix /tmp/example
仅安装特定组件
cmake --install build --component executables
扩展资料
-
CMake CLI文档:https://cmake.org/cmake/help/latest/manual/cmake.1.html -
CMake tools extension for VSCode:https://devblogs.microsoft.com/cppblog/cmake-tools-extension-for-visual-studio-code/ -
VSCode CMake Tools documentation:https://github.com/microsoft/vscode-cmake-tools/tree/develop/docs#cmake-tools-for-visual-studio-code-documentation -
Debugging in VSCode:https://code.visualstudio.com/docs/editor/debugging

浙公网安备 33010602011771号