CMake手册详解:(一)开始篇

前言

CMake是目前比较流行的跨平台构建工具,接触过跨平台项目的小伙伴应该都对他很熟悉。为了能更好的学习CMake,我打算从CMake官网的开发手册入手,系统的学习 CMake。CMake的版本也在不停更新,有些新的命令和变量会随着版本更新添加进来,这是后事了,暂且不管;现在锁定CMake 2.8.12作为手册翻译的版本。(因为目前ubuntu系统的最新版本CMake就是这版),下面就进入正题:

手册开始部分

命令名称

cmake - 跨平台Makefile生成工具。

用法

  cmake [选项] <源码路径>

  cmake [选项] <现有构建路径>

描述

  cmake可执行程序是CMake的命令行界面。它可以用脚本对工程进行配置。工程配置设置可以在命令行中使用-D选项指定。使用-i选项,cmake将通过提示交互式地完成该设置。

  CMake是一个跨平台的构建系统生成工具。它使用平台无关的CMake清单文件CMakeLists.txt,指定工程的构建过程;源码树的每个路径下都有这个文件。CMake产生一个适用于具体平台的构建系统,用户使用这个系统构建自己的工程。

选项

-C [initial-cache]: 预加载一个脚本填充缓存文件。

  当cmake在一个空的构建树上第一次运行时,它会创建一个CMakeCache.txt文件,然后向其中写入可定制的项目设置数据。-C选项可以用来指定一个文件,在第一次解析这个工程的cmake清单文件时,从这个文件加载缓存的条目(cache entries)信息。被加载的缓存条目比项目默认的值有更高的优先权。参数中给定的那个文件应该是一个CMake脚本,其中包含有使用CACHE选项的SET命令;而不是一个缓存格式的文件。

-D [var]:[type]=[value]: 创建一个CMake的缓存条目。

  当cmake第一次运行于一个空的构建数时,它会创建一个CMakeCache.txt文件,并且使用可定制的工程设置来填充这个文件。这个选项可以用来指定优先级高于工程的默认值的工程设置值。这个参数可以被重复多次,用来填充所需要数量的缓存条目(cache entries)。

-U [globbing_expr]: 从CMake的缓存文件中删除一条匹配的条目。

  该选项可以用来删除CMakeCache.txt文件中的一或多个变量。文件名匹配表达式(globbing expression)支持通配符*和?的使用。该选项可以重复多次以删除期望数量的缓存条目。使用它时要小心,你可能因此让自己的CMakeCache.txt罢工。

-G [generator-name]: 指定一个makefile生成工具。

  在具体的平台上,CMake可以支持多个原生的构建系统。makefile生成工具的职责是生成特定的构建系统。可能的生成工具的名称将在生成工具一节给出。

-T [toolset-name]: 指定支持的特殊的生成工具

  在具体平台上,CMake支持选择编译器给原生的构建系统,这项功能目前只在特殊的生成器环境下才支持:Visual Studio >= 10或Xcode >= 3.0 具体的工具名称请参见原生构建系统文档。

-Wno-dev: 抑制开发者警告。

  抑制那些为CMakeLists.txt文件的作者准备的警告信息。

-Wdev: 使能开发者警告信息输出功能。

  允许那些为CMakeLists.txt文件的作者准备的警告信息。

  

-E: CMake命令行模式。

-i: 以向导模式运行CMake。

  向导模式是在没有GUI时,交互式地运行cmake的模式。cmake会弹出一系列的提示,要求用户回答关于工程配置的一行问题。这些答复会被用来设置cmake的缓存值。

  

-L[A][H]: 列出缓存的变量中的非高级的变量。

–build [dir]: 构建由CMake生成的工程的二进制树。

  该选项用以下的选项概括了内置构建工具的命令行界面

  [dir] = 待创建的工程二进制路径。

  –target [tgt] = 构建[tgt],而不是默认目标。

  –config [cfg] = 对于多重配置工具,选择配置[cfg]。

  –clean-first = 首先构建目标的clean伪目标,然后再构建。

  (如果仅仅要clean掉,使用–target ‘clean’选项。)

  – = 向内置工具(native tools)传递剩余的选项。

  运行不带选项的cmake –build来获取快速帮助信息。

  

-N: 查看模式。

  仅仅加载缓存信息,并不实际运行配置和生成步骤。

  

-P [file]: 处理脚本模式。

–find-package: 运行pkg-config模式。

  使用find_package()搜索一个软件包并且把结果打印出来。可以使用 CMake来代替pkg-config来查找安装的二进制软件包,在Makefile-based的工程或autoconf-based工程。

  

–graphviz=[file]: 生成依赖的graphviz图。

  生成一个graphviz软件的输入文件,其中包括了项目中所有库和可执行文件之间的依赖关系。

  

–system-information [file]: 输出与该系统相关的信息。

–debug-trycompile: 不删除“尝试编译”路径。

  不删除那些为try_compile调用生成的路径。这在调试失败的try_compile文件时比较有用。不过,因为上一次“尝试编译”生成的旧的垃圾输出文件也许会导致一次不正确通过/不通过,且该结果与上次测试的结果不同,所以该选项可能会改变“尝试编译”的结果。对于某一次“尝试编译”,该选项最好只用一次;并且仅仅在调试时使用。

  

–debug-output: 将cmake设置为调试模式。

  在cmake运行时,打印额外的信息;比如使用message(send_error)调用得到的栈跟踪信息。

  

–trace: 将cmake设置为跟踪模式。

  用message(send_error )调用,打印所有调用生成的跟踪信息,以及这些调用发生的位置。

–warn-uninitialized: 警告没有初始化的变量。

  如果有未初始化的变量,则打印警告信息。

–warn-unused-vars: 警告没有使用的变量。

  找到那些声明或赋值的,但是没有使用的变量。

  

–no-warn-unused-cli: 不警告在命令行声明但未使用的变量。

  不找那些在命令行声明的,但是没有使用的变量。

  

–check-system-vars: 在系统文件目录里也检测有问题的变量。

  通常,未使用和没有初始化的变量都是在CMAKE_SOURCE_DIR和CMAKE_BINARY_DIR目录下查找。这个标志让CMake在其他文件查找也能发出警告。

  

–help-command cmd [file]: 打印单个命令cmd的帮助信息,然后退出。

  显示给定的命令的完整的文档。如果指定了[file]参数,该文档会写入该文件,其输出格式由该文件的后缀名确定。支持的文件类型有:man page,HTML,DocBook以及纯文本。

  

–help-command-list [file]: 列出所有可用命令的清单,然后退出。

  该选项列出的信息含有所有命令的名字;其中,每个命令的帮助信息可以使用–help-command选项后跟一个命令名字得到。如果指定了[file]参数,帮助信息会写到file中,输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-commands [file]: 打印所有命令的帮助文件,然后退出。

  显示所有当前版本的命令的完整文档。如果指定了[file]参数,帮助信息会写到file中,输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-compatcommands [file]: 打印兼容性命令(过时的命令—译注)的帮助信息。

  显示所有关于兼容性命令的完整文档。如果指定了[file]参数,帮助信息会写到file中,输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-module module [file]: 打印某单一模块的帮助信息,然后退出。

  打印关于给定模块的完整信息。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-module-list [file]: 列出所有可用模块名,然后退出。

  列出的清单包括所有模块的名字;其中,每个模块的帮助信息可以使用–help-module选项,后跟模块名的方式得到。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-modules [file]: 打印所有模块的帮助信息,然后退出。

  显示关于所有模块的完整文档。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-custom-modules [file]: 打印所有自定义模块名,然后退出。

  显示所有自定义模块的完整文档。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-policy cmp [file]: 打印单个策略的帮助信息,然后退出。

  显示给定的策略的完整文档。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-policies [file]: 打印所有策略的帮助信息,然后退出。

  显示所有策略的完整文档。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-property prop [file]: 打印单个属性的帮助信息,然后退出。

  显示指定属性的完整文档。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-property-list [file]: 列出所有可用的属性,然后退出。

  该命令列出的清单包括所有属性的名字;其中,每个属性的帮助信息都可以通过–help-property选项后跟一个属性名的方式获得。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-properties [file]: 打印所有属性的帮助信息,然后退出。

  显示所有属性的完整文档。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-variable var [file]: 打印单个变量的帮助信息,然后退出。

  显示指定变量的完整文档。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-variable-list [file]: 列出文档中有记录的变量,然后退出。

  该命令列出的清单包括所有变量的名字;其中,每个变量的帮助信息都可以通过–help-variable选项后跟一个变量名的方式获得。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–help-variables [file]: 打印所有变量的帮助信息,然后退出。

  显示所有变量的完整帮助文档。如果指定了[file]参数,帮助信息会写到file中,且输出格式依赖于文件名后缀。支持的文件格式包括:man page,HTML,DocBook以及纯文本。

–copyright [file]: 打印CMake的版权信息,然后退出。

  如果指定了[file]参数,版权信息会写到这个文件中。

–help,-help,-usage,-h,-H,/?: 打印用法信息,然后退出。

  用法信息描述了基本的命令行界面及其选项。

–help-full [file]: 打印完整的帮助信息,然后退出。

  显示大多数UNIX man page提供的帮助信息。该选项是为非UNIX平台提供的;但是如果man手册页没有安装,它也能提供便利。如果制定了[file]参数,帮助信息会写到这个文件中。

–help-html [file]: 以HTML格式打印完整的帮助信息,然后退出。

  CMake的作者使用该选来帮助生成web页面。如果指定了[file]参数,帮助信息会写到这个文件中。

–help-man [file]: 以UNIX的man手册页格式打印完整的帮助信息,然后退出。

  cmake使用该选生成UNIX的man手册页。如果指定了[file]参数,帮助信息会写到这个文件中。

–version,-version,/V [file]: 显示程序名/版本信息行,然后退出。

  如果指定了[file]参数,版本信息会写到这个文件中。

时间: 2024-11-02 09:02:42

CMake手册详解:(一)开始篇的相关文章

CMake 手册详解

CMake 手册详解 来源 http://www.cnblogs.com/coderfenghc/tag/cmake/ 公司的一个项目使用CMake作为跨平台构建工具:业务有需求,当然要好好研读一下官方的技术手册.目前的计划是先把官方手册翻译一下,了解清楚CMake中的各种命令.属性和变量的用法.同时在工作中也会阅读CMake的真实源码,后续会基于此陆续写一些工程中使用CMake的心得.CMake的版本也在不停更新,有些新的命令和变量会随着版本更新添加进来,这是后事了,暂且不管:现在锁定CMak

JConsole使用手册详解

一篇Sun项目主页上介绍JConsole使用的文章,前段时间性能测试的时候大概翻译了一下以便学习,今天整理一下发上来,有些地方也不知道怎么翻,就保留了原文,可能还好理解点,呵呵,水平有限,翻的不好,大家多多包涵. JConsole毕竟是JDK自带的东西,功能虽然没有一些商业软件那么强大,但是稳定性好,在大压力情况下也不会发生什么问题.而且,提供了相对全面的系统监控功能,还是值得一用的. JConsole JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用

ANDROID L——Material Design详解(动画篇)

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lollipop(5.0). 前几天发现Android5.0正式版的sdk已经可以下载了,而且首次搭载Android L系统的Nexus 6和 Nexus 9也即将上市. 所以是时候开始学习Android L了! 关于Android L如何配置模拟器和创建项目,如果大家有兴趣的话可以看看我之前的一篇文章: A

TCP协议详解(理论篇)

TCP协议详解(理论篇) 1.    与UDP不同的是,TCP提供了一种面向连接的.可靠的字节流服务.面向连接比较好理解,就是连接双方在通信前需要预先建立一条连接,这犹如实际生活中的打电话.助于可靠性,TCP协议中涉及了诸多规则来保障通信链路的可靠性,总结起来,主要有以下几点: (1)应用数据分割成TCP认为最适合发送的数据块.这部分是通过"MSS"(最大数据包长度)选项来控制的,通常这种机制也被称为一种协商机制,MSS规定了TCP传往另一端的最大数据块的长度.值得注意的是,MSS只能

Spark 性能相关参数配置详解-shuffle篇

作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 在Spark的官方文档http://spark.apache.org/docs/latest/configuration.html 中提供了这些可配置参数中相当大一部分的说明. 但是文档的更新总是落后于代码的开发的, 还有一些配置参数没有来得及被添加到

[转]ANDROID L——Material Design详解(动画篇)

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 转自:http://blog.csdn.net/a396901990/article/details/40187203 Android L: Google已经确认Android L就是Android Lollipop(5.0). 前几天发现Android5.0正式版的sdk已经可以下载了,而且首次搭载Android L系统的Nexus 6和 Nexus 9也即将上市. 所以是时候开始学习

man 帮助手册详解

MANUAL SECTIONS The standard sections of the manual include: 1      User Commands(用户命令) 2      System Calls(系统调用) 3      C Library Functions(库文件) 4      Devices and Special Files(特殊文件如块设备,字符设备) 5      File Formats and Conventions(配置文件格式) 6      Games

IOS 第三方 - CocoaPods详解之---安装篇

CocoaPods详解之----使用篇 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/18737437 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢! 一.什么是CocoaPods 1.为什么需要CocoaPods 在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson.AFNetworking.Reachability等等.使用这些库的时

事件驱动模型实例详解(Java篇)

或许每个软件从业者都有从学习控制台应用程序到学习可视化编程的转变过程,控制台应用程序的优点在于可以方便的练习某个语言的语法和开发习惯(如.net和java),而可视化编程的学习又可以非常方便开发出各类人机对话界面(HMI).可视化编程或许是一个初学者开始对软件感兴趣的开始,也可能是一个软件学习的里程碑点,因为我们可以使用各类软件集成开发环境(IDE)方便的在现成的界面窗口上拖放各类组件(Component),这类组件包括我们常见的按钮(Button),单选按钮(Radio Button),复选框