cmake 执行命令
在命令行中执行 CMake 的命令主要用于配置、生成和构建项目。以下是一些常用的 CMake 命令及其用法。
1. 配置项目
配置项目是 CMake 的第一步,它会根据 CMakeLists.txt
文件生成相应的构建系统文件(如 Makefile 或 Visual Studio 解决方案文件)。
1.1 基本配置命令
cmake -S source_dir -B build_dir
-S source_dir
:指定源代码目录(包含CMakeLists.txt
的目录)。-B build_dir
:指定构建目录(生成的构建文件将放在这里)。
示例:
cmake -S /path/to/source -B /path/to/build
1.2 指定生成器
可以指定生成器来生成不同类型的构建系统文件。
cmake -S source_dir -B build_dir -G "GeneratorName"
- 常见的生成器:
Unix Makefiles
:生成 Makefile(默认)。Visual Studio 17 2022
:生成 Visual Studio 2022 解决方案文件。MinGW Makefiles
:生成适用于 MinGW 的 Makefile。Ninja
:生成适用于 Ninja 构建系统的文件。
示例:
cmake -S /path/to/source -B /path/to/build -G "Unix Makefiles"
1.3 设置变量
可以在命令行中设置变量,这些变量会被传递给 CMakeLists.txt 文件。
cmake -S source_dir -B build_dir -D VAR_NAME=VALUE
-D VAR_NAME=VALUE
:设置变量的值。
示例:
cmake -S /path/to/source -B /path/to/build -D CMAKE_BUILD_TYPE=Debug
2. 构建项目
配置完成后,可以使用生成的构建系统文件来构建项目。
2.1 使用默认生成器
cmake --build build_dir
build_dir
:构建目录。
示例:
cmake --build /path/to/build
2.2 指定目标
可以指定要构建的目标(如可执行文件或库)。
cmake --build build_dir --target TARGET_NAME
TARGET_NAME
:目标名称。
示例:
cmake --build /path/to/build --target my_app
2.3 指定配置类型
对于多配置生成器(如 Visual Studio),可以指定配置类型(如 Debug 或 Release)。
cmake --build build_dir --config CONFIG_TYPE
CONFIG_TYPE
:配置类型(Debug、Release 等)。
示例:
cmake --build /path/to/build --config Release
3. 安装项目
如果项目配置了安装规则(使用 install()
命令),可以使用以下命令进行安装。
3.1 安装命令
cmake --install build_dir
build_dir
:构建目录。
示例:
cmake --install /path/to/build
3.2 指定安装前缀
可以指定安装路径。
cmake --install build_dir --prefix INSTALL_PREFIX
INSTALL_PREFIX
:安装路径。
示例:
cmake --install /path/to/build --prefix /usr/local
4. 测试项目
如果项目启用了测试(使用 enable_testing()
命令),可以运行测试。
4.1 运行测试
ctest -C CONFIG_TYPE
-C CONFIG_TYPE
:指定配置类型(Debug、Release 等)。
示例:
ctest -C Release
5. 清理构建目录
清理构建目录中的生成文件。
5.1 清理命令
cmake --build build_dir --target clean
build_dir
:构建目录。
示例:
cmake --build /path/to/build --target clean
6. 其他常用命令
6.1 查看 CMake 变量
cmake -LH
-L
:列出所有变量及其值。-H
:隐藏内部变量。
6.2 查看 CMake 版本
cmake --version
6.3 查看帮助信息
cmake --help
总结
这些命令涵盖了 CMake 的基本用法,包括配置、构建、安装和测试项目。你可以根据项目的具体需求选择合适的命令和选项。