CMake之命令行


我们承担ROS,FastDDS等通信中间件,C++,cmake等技术的项目开发和专业指导和培训,有多年相关工作经验,质量有保证,如有需要请私信联系。

构建系统介绍

为生成一个构建系统,必须要选择以下:

  1. Source Tree:包含源文件的顶级目录,必须包含顶级的CMakeLists.txt
  2. Build Tree:cmake会生成CMakeCache.txt文件标识这个目录为build tree,并将已存在的信息比如构建配置选项等信息写入该文件
  3. Generator:通过cmake --help可以查看有哪些生成器。通过-G选项指定生成器

生成构建系统

通过运行以下命令指定source和build trees并生成一个构建系统

  • cmake [<options>] <path-to-source><path-to-source>是source tree,当前目录作为build tree。source tree必须要包含CMakeLists.txt,必须不能包含CMakeCache.txt,因为后者标识了一个现有的构建树
  • cmake [<options>] <path-to-existing-build> :使用<path-to-existing-build>作为build tree,并从CMakeCache.txt文件中加载source tree的路径,这个必须要在上一步的camke运行中生成。
  • cmake [<options>] -S <path-to-source> -B <path-to-build><path-to-source>作为source tree,<path-to-build>作为build tree,source tree必须要包含CMakeLists.txt,build tree会自动创建。如:
cmake -S src -B build

<options> 可以为以下:

  • -H.:配置阶段执行,表示在当前目录下搜索CMakeLists.txt文件, 并不是所有的cmake版本都支持(比如win下不支持),更推荐的方式是下面使用-S或者直接使用 cmake .
  • -S <path-to-source> CMake要构建的项目的根目录
  • -B <path-to-build> 要构建的build目录。如果该目录不存在会自动创建
  • -C <initial-cache> 预加载脚本以填充cache。当cmake第一次在空的build tree中运行时会创建CMakeCache.txt并填充一些常用的设置信息。这条指令指定要预填充的内容。加载的词条较project的默认值而言有更高的优先级。指定的文件必须是包含set()命令的CACHE选项的CMake风格文件。(有什么用?TODO)
  • -D <var>:<type>=<value>, -D <var>=<value> 用于为CMake设置任何类型的变量:逻辑变量,路径等等,这个变量可以在CMakeLists中使用;创建或更新CACHE 词条
  • -U <globbing_expr>
  • -G <generator-name>:切换生成器,可以通过cmake --help查看有哪些生成器
  • -T <toolset-spec>
  • -A <platform-name>
  • -Wno-dev
  • -Wdev
  • -Werror=dev
  • -Wno-error=dev
  • -Wdeprecated
  • -Wno-deprecated
  • -Werror=deprecated
  • -Wno-error=deprecated
  • -L[A][H]
  • -N
  • --graphviz=[file]
  • --system-information [file]
  • --log-level=<ERROR|WARNING|NOTICE|STATUS|VERBOSE|DEBUG|TRACE>
  • --log-context
  • --debug-trycompile
  • --debug-output
  • --debug-find
  • --trace
  • --trace-expand
  • --trace-format=<format>
  • --trace-source=<file>
  • --trace-redirect=<file>
  • --warn-uninitialized
  • --warn-unused-vars
  • --no-warn-unused-cli
  • --check-system-vars
  • --profiling-output=<path>
  • --profiling-format=<file>
  • --preset <preset>, --preset=<preset>
  • --list-presets, --list-presets=<[configure | build | test | all]>

构建项目

cmake提供了命令行签名去构建已经存在的binary tree。运行cmake --build快速查看帮助信息

cmake --build [<dir> | --preset <preset>] [<options>] [-- <build-tool-options>]

命令参数:

  • --build <dir> 要构建的目录,这个参数是必须的且第一个
  • --preset <preset>, --preset=<preset> 使用 build preset指定构建选项。当前工作目录必须包含CMake preset文件。
  • --list-presets
  • --parallel [<jobs>], -j [<jobs>] 构建时最大的并行处理器个数。如果被忽略的话使用默认数量。如果环境变量CMAKE_BUILD_PARALLEL_LEVEL 指定默认数量
  • --target <tgt>..., -t <tgt>... 目标<tgt>代替默认的目标,可以用空格分隔,指定多个目标
  • --config <cfg> 对于多配置工具,选择使用cfg
  • --clean-first 构建时先clean,再构建。如果只clean,使用 --target clean
  • --use-stderr
  • --verbose, -vCMake构建时,如果确定使用了哪些编译标志?可以通过设置VERBOSE=1查看(实际测试小写无效,且–和VERBOSE之间要有空格),如:cmake --build ./build -- VERBOSE=1
  • -- 为本地tool预留的

cmake会生成很多文件,可以使用cmake --build . --target <target-name>,target-name为以下命令:

  • all:默认目标,将在项目中构建所有目标
  • clean:删除所有生成的文件
  • rebuild_cache:将调用CMake为源文件生成依赖——?
  • edit_cache:这个目标允许直接编辑缓存——有啥用?
  • test:将在CTest的帮助下运行测试套件
  • install:将按照安装规则安装
  • package:将调用CPack为项目生成可分发的包

安装项目

cmake提供命令行工具用于安装project binary tree。在构建完成之后运行安装命令。运行cmake --install查看帮助

cmake --install <dir> [<options>]

参数说明:

  • --install <dir> 安装命令,是必须的且是第一位,<dir>是cmake_install.cmake的位置
  • --config <cfg> 对于多个配置生成器,选择使用cfg
  • --component <comp> 只安装comp
  • --default-directory-permissions <permissions> 安装的默认目录,权限(permissions)格式为<u=rwx,g=rx,o=rx>
  • --prefix <prefix> 覆盖安装前缀CMAKE_INSTALL_PREFIX
  • --strip 安装前先strip
  • -v, --verbose 允许verbose输出。如果环境变量VERBOSE被设置了这个选项会被忽略。

打开项目

cmake --open <dir>

打开一个已存在的项目。

运行脚本

cmake [{-D <var>=<value>}...] -P <cmake-script-file> [-- <unparsed-options>...]

运行命令行工具

cmake通过签名提供内置的命令行工具。通过运行cmake -E 或 cmake -E help查看。有以下内容:

  • capabilities:以json的形式输出cmake capabilities。
  • cat <files>...
  • chdir <dir> <cmd> [<arg>...]
  • compare_files [--ignore-eol] <file1> <file2>
  • copy <file>... <destination>
  • copy_directory <dir>... <destination>
  • copy_if_different <file>... <destination>
  • create_symlink <old> <new>
  • create_hardlink <old> <new>
  • echo [<string>...]
  • echo_append [<string>...]
  • env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...
  • environment
  • false
  • make_directory <dir>...
  • md5sum <file>...
  • sha1sum <file>...
  • sha224sum <file>...
  • sha256sum <file>...
  • sha384sum <file>...
  • sha512sum <file>...
  • remove [-f] <file>...
  • remove_directory <dir>...
  • rename <oldname> <newname>
  • rm [-rRf] <file> <dir>...
  • server
  • sleep <number>...
  • tar [cxt][vf][zjJ] file.tar [<options>] [--] [<pathname>...]
  • time <command> [<args>...]
  • touch <file>...
  • touch_nocreate <file>...
  • true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值