CMake命令行工具介绍

CMake是一个跨平台的自动化构建系统,用于管理软件编译过程。它通过CMakeLists.txt文件定义构建规则,支持生成多种构建系统(如Makefile、Ninja、Visual Studio等)。CMake命令行工具提供丰富的选项,用于配置、生成和构建项目。

基本命令结构

CMake命令行工具的基本结构如下:

cmake [options] <path-to-source>
cmake [options] <path-to-existing-build>

<path-to-source>是包含CMakeLists.txt的源代码目录,<path-to-existing-build>是已存在的构建目录。

常用选项

-B
指定构建目录路径,例如:

cmake -B build

-D :=
设置CMake变量,例如:

cmake -DCMAKE_BUILD_TYPE=Release

-G
指定生成器,例如:

cmake -G "Unix Makefiles"

--build
构建项目,例如:

cmake --build build --config Debug

--target
指定构建目标,例如:

cmake --build build --target install

配置选项

CMAKE_BUILD_TYPE
指定构建类型(Debug/Release/RelWithDebInfo/MinSizeRel),例如:

cmake -DCMAKE_BUILD_TYPE=Debug

CMAKE_INSTALL_PREFIX
设置安装路径,例如:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local

CMAKE_CXX_COMPILER
指定C++编译器,例如:

cmake -DCMAKE_CXX_COMPILER=g++-10

构建选项

--parallel []
并行构建,例如:

cmake --build build --parallel 4

--clean-first
构建前清理,例如:

cmake --build build --clean-first

--verbose
显示详细构建信息,例如:

cmake --build build --verbose

生成器选项

CMake支持多种生成器,常见的有:

  • Unix Makefiles
  • Ninja
  • Visual Studio 16 2019
  • Xcode

指定生成器示例:

cmake -G "Ninja"

缓存管理

-U <globbing_expr>
删除CMake缓存变量,例如:

cmake -U "MY_VAR*"

-N
查看模式,不运行配置和生成步骤,例如:

cmake -N

跨编译配置

指定工具链文件进行跨平台编译,例如:

cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake

环境变量

CMake会读取某些环境变量,例如:

export CMAKE_PREFIX_PATH=/opt/custom/libs

诊断选项

--debug-trycompile
调试try_compile调用,例如:

cmake --debug-trycompile

--trace-expand
跟踪并展开所有命令,例如:

cmake --trace-expand

示例工作流

创建构建目录并配置项目:

mkdir build && cd build
cmake ..

构建项目:

cmake --build .

安装项目:

cmake --build . --target install

清理构建:

cmake --build . --target clean

高级用法

CPack集成
生成打包配置:

cpack --config CPackConfig.cmake

CTest集成
运行测试:

ctest -C Debug -V

文件API
查询构建系统信息:

cmake -DCMAKE_EXPERIMENTAL_FILE_API_ON=1

CMake命令行工具的强大之处在于其灵活性和可扩展性,通过组合不同选项可以满足各种复杂构建需求。掌握这些命令能显著提高项目构建效率,特别是在大型跨平台项目中。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐