非交互式命令行工具

生成缓存

生成 cmake 缓存:

cmake -B build 

等同于:

mkdir -v build
cd build
cmake ..

使用 nginx 生成器, cmake 在 linux 平台默认使用 makefile 生成器:

cmake -G Ninja -B build

修改选项的值:

cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/path/to/ros/cmake ..

编译项目

编译:

cd build
cmake --build .

等同于:

cd build
make -j$(nproc)

安装

安装文件到系统里:

cd build
sudo cmake --build . --target install

等同于:

cd build
sudo make install

在新版本中, 引入了 --install 选项:

cd build
sudo cmake --install .

列举选项

  • -L, 列出可用选项
  • -LH, 列出可用选项, 包括注释
  • -N, 只读模式, 不会再重头运行一次 cmake 脚本

常用的选项组合是:

$ cmake -N -LH .

运行脚本

cmake 本身是脚本语言, 类似于 bash, 它们是可以直接运行的:

hello.cmake 的内容:

message("Hello, world!")
cmake -P hello.cmake

也可以使用 shebang line, 修改后的 hello.cmake 如下:

#!/usr/bin/env -S cmake -P

message("Hello, world")

然后直接运行它:

chmod +x hello.cmake
./hello.cmake

命令行工具

cmake 命令本身有提供命令行工具, 尤其是对 windows 平台比较有用, 很多命令在 *nix 环境默认已提供.

cmake -E <command> [<options>]

比如:

cmake -E sleep 5

常用选项有:

  • md5sum, sha1sum, sha256sum, sha512sum
  • copy, mv, sleep, time, touch, echo
  • environment 列出当前的环境变量, 类似于 env 命令
  • capabilities 以 JSON 格式显示当前 cmake 命令支持的功能, 比如有哪些 Generators
  • server, 运行服务器模式, 启动一个 cmake 守护进程, 可通过网络访问它

参考