logo资料库

Cmake开发手册详解.pdf

第1页 / 共82页
第2页 / 共82页
第3页 / 共82页
第4页 / 共82页
第5页 / 共82页
第6页 / 共82页
第7页 / 共82页
第8页 / 共82页
资料共82页,剩余部分请下载后查看
目录
CMake2.8.3选项
目录 一、CMake2.8.3 选项 ....................................................................................................... 4 用法 ....................................................................................................................................... 4 描述 ....................................................................................................................................... 5 选项 ....................................................................................................................................... 5 生成器 ................................................................................................................................. 10 二、CMake 命令 ................................................................................................................... 12 CMD#1 : add_custom_command ..................................................................................... 12 CMD#2: add_custom_target ............................................................................................... 14 CMD#3:add_definitions ....................................................................................................... 15 CMD#4:add_dependencies ................................................................................................. 15 CMD#5:add_executable: ..................................................................................................... 16 CMD#6:add_library ............................................................................................................. 16 CMD#7:add_subdirectory ................................................................................................... 17 CMD#8:add_test .................................................................................................................. 18 CMD#9:aux_source_directory ............................................................................................. 19 CMD#10:break ..................................................................................................................... 19 CMD#11:build_command ................................................................................................... 19 CMD#12:cmake_minimum_required .................................................................................. 20 CMD#13:cmake_policy ........................................................................................................ 20 CMD#14:configure_file: ...................................................................................................... 21 CMD#15:create_test_sourcelist: ......................................................................................... 22 CMD#16:define_property: .................................................................................................. 22 CMD#17: else ...................................................................................................................... 23 CMD#18: elseif .................................................................................................................... 23 CMD#19: enable_language ................................................................................................. 23 CMD#20: enable_testing ..................................................................................................... 23 CMD#21: endforeach .......................................................................................................... 24 CMD#22: endfunction ......................................................................................................... 24
CMD#23: endif ..................................................................................................................... 24 CMD#24: endmacro ............................................................................................................ 24 CMD#25: endwhile .............................................................................................................. 24 CMD#26: execute_process .................................................................................................. 25 CMD#27:export ................................................................................................................... 25 CMD#28: file ........................................................................................................................ 26 CMD#29:find_file................................................................................................................. 28 CMD#30:find_library ........................................................................................................... 30 CMD#31:find_package ........................................................................................................ 33 CMD#32 : find_path ............................................................................................................ 38 CMD#33:find_program ........................................................................................................ 40 CMD#34:fltk_wrap_ui ......................................................................................................... 42 CMD#35 : foreach ................................................................................................................ 42 CMD#36 : function .............................................................................................................. 43 CMD#37 : get_cmake_property .......................................................................................... 43 CMD#38 : get_directory_property ...................................................................................... 44 CMD#39 : get_filename_component .................................................................................. 44 CMD#40 : get_property ....................................................................................................... 44 CMD#41 : get_source_file_property ................................................................................... 45 CMD#42 : get_target_property ........................................................................................... 45 CMD#43 : get_test_property .............................................................................................. 46 CMD#44 : if .......................................................................................................................... 46 CMD#45 : include ................................................................................................................ 49 CMD#46 : include_directories ............................................................................................. 50 CMD#47 : include_external_msproject ............................................................................... 50 CMD#48 : include_regular_expression ............................................................................... 50 CMD#49 : install .................................................................................................................. 50 CMD#50 : link_directories 指定连接器查找库的路径。 ................................................. 55 CMD#51: list ........................................................................................................................ 55 CMD#52:load_cache ......................................................................................................... 56
CMD#53:load_command .................................................................................................. 56 CMD#54:macro ................................................................................................................. 57 CMD#55:mark_as_advanced ............................................................................................ 57 CMD#56:math .................................................................................................................. 57 CMD#57:message ............................................................................................................. 58 CMD#58: option .................................................................................................................. 58 CMD#59: output_required_files ......................................................................................... 58 CMD#60: project ................................................................................................................. 58 CMD#61: qt_wrap_cpp ....................................................................................................... 59 CMD#62: qt_wrap_ui .......................................................................................................... 59 CMD#63: remove_definitions ............................................................................................. 59 CMD#64: return ................................................................................................................... 59 CMD#65: separate_arguments ........................................................................................... 60 CMD#66: set ........................................................................................................................ 60 CMD#67: set_directory_properties ..................................................................................... 61 CMD#68: set_property ........................................................................................................ 61 CMD#69: set_source_files_properties ................................................................................ 62 CMD#70: set_target_properties ......................................................................................... 62 CMD#71: set_tests_properties ........................................................................................... 64 CMD#72: site_name ............................................................................................................ 64 CMD#73: source_group ....................................................................................................... 64 CMD#74: string .................................................................................................................... 64 CMD#75: target_link_libraries ............................................................................................ 66 CMD#76: try_compile.......................................................................................................... 67 CMD#77: try_run ................................................................................................................. 68 CMD#78 unset ..................................................................................................................... 69 CMD#79 : variable_watch ................................................................................................... 69 CMD#80: while .................................................................................................................... 69
公司的一个项目使用 CMake 作为跨平台构建工具;业务有需求,当然要好好研读一下官方的 技术手册。目前的计划是先把官方手册翻译一下,了解清楚 CMake 中的各种命令、属性和变量 的用法。同时在工作中也会阅读 CMake 的真实源码,后续会基于此陆续写一些工程中使用 CMake 的心得。CMake 的版本也在不停更新,有些新的命令和变量会随着版本更新添加进来, 这是后事了,暂且不管;现在锁定 CMake 2.8.3 作为手册翻译的版本。 作为园子里的新丁,文章在术语和表达等等方面会有欠缺的地方,还请大侠们慷慨指点。 另外,罗马不是一天建成的,长长的手册翻译完也不知道要经历多少日升月落;不过还是希望自 己能够坚持下去:-)。 一、CMake2.8.3 选项  命令名称  用法  描述  命令选项  生成器  命令  属性  全局域属性  目录属性  目标属性  测试属性  源代码属性  Cache Entries 属性  兼容性命令  CMake 标准模块  CMake 策略  变量  改变行为的变量  描述系统的变量  语言变量  控制构建的变量  提供信息的变量  版权  其他参考资料 命令名称 cmake - 跨平台 Makefile 生成工具。 用法 cmake [选项] <源码路径>
cmake [选项] <现有构建路径> 描述 cmake 可执行程序是 CMake 的命令行界面。它可以用脚本对工程进行配置。工程配 置设置可以在命令行中使用-D 选项指定。使用-i 选项,cmake 将通过提示交互式地完成该 设置。 CMake 是一个跨平台的构建系统生成工具。它使用平台无关的 CMake 清单文件 CMakeLists.txt,指定工程的构建过程;源码树的每个路径下都有这个文件。CMake 产生 一个适用于具体平台的构建系统,用户使用这个系统构建自己的工程。 选项 -C : 预加载一个脚本填充缓存文件。 当 cmake 在一个空的构建树上第一次运行时,它会创建一个 CMakeCache.txt 文件,然 后向其中写入可定制的项目设置数据。-C 选项可以用来指定一个文件,在第一次解析这个工程 的 cmake 清单文件时,从这个文件加载缓存的条目(cache entries)信息。被加载的缓存条目 比项目默认的值有更高的优先权。参数中给定的那个文件应该是一个 CMake 脚本,其中包含有 使用 CACHE 选项的 SET 命令;而不是一个缓存格式的文件。 -D :=: 创建一个 CMake 的缓存条目。 当 cmake 第一次运行于一个空的构建数时,它会创建一个 CMakeCache.txt 文件, 并且使用可定制的工程设置来填充这个文件。这个选项可以用来指定优先级高于工程的默认 值的工程设置值。这个参数可以被重复多次,用来填充所需要数量的缓存条目(cache entries)。 -U : 从 CMake 的缓存文件中删除一条匹配的条目。 该选项可以用来删除 CMakeCache.txt 文件中的一或多个变量。文件名匹配表达式 (globbing expression)支持通配符*和?的使用。该选项可以重复多次以删除期望数量的缓存 条目。使用它时要小心,你可能因此让自己的 CMakeCache.txt 罢工。 -G : 指定一个 makefile 生成工具。 在具体的平台上,CMake 可以支持多个原生的构建系统。makefile 生成工具的职责是生 成特定的构建系统。可能的生成工具的名称将在生成工具一节给出。 -Wno-dev: 抑制开发者警告。 抑制那些为 CMakeLists.txt 文件的作者准备的警告信息。 -Wdev: 使能开发者警告信息输出功能。 允许那些为 CMakeLists.txt 文件的作者准备的警告信息。 -E: CMake 命令行模式。 为了真正做到与平台无关,CMake 提供了一系列可以用于所有系统上的的命令。以-E 参数 运行 CMake 会帮助你获得这些命令的用法。可以使用的命令有:chdir, copy, copy_if_different copy_directory, compare_files, echo, echo_append, environment,
make_directory, md5sum, remove_directory, remove, tar, time, touch, touch_nocreate, write_regv, delete_regv, comspec, create_symlink。 -i: 以向导模式运行 CMake。 向导模式是在没有 GUI 时,交互式地运行 cmake 的模式。cmake 会弹出一系列的提示, 要求用户回答关于工程配置的一行问题。这些答复会被用来设置 cmake 的缓存值。 -L[A][H]: 列出缓存的变量中的非高级的变量。 -L 选项会列出缓存变量会运行 CMake,并列出所有 CMake 的内有被标记为 INTERNAL 或者 ADVANCED 的缓存变量。这会显示当前的 CMake 配置信息,然后你可以用-D 选项改变 这些选项。修改一些变量可能会引起更多的变量被创建出来。如果指定了 A 选项,那么命令也 会显示高级变量。如果指定了 H 选项,那么命令会显示每个变量的帮助信息。 --build : 构建由 CMake 生成的工程的二进制树。(这个选项的含义我不是很清楚— 译注) 该选项用以下的选项概括了内置构建工具的命令行界面 = 待创建的工程二进制路径。 --target = 构建,而不是默认目标。 --config = 对于多重配置工具,选择配置。 --clean-first = 首先构建目标的 clean 伪目标,然后再构建。 (如果仅仅要 clean 掉,使用--target 'clean'选项。) -- = 向内置工具(native tools)传递剩余的选项。 运行不带选项的 cmake --build 来获取快速帮助信息。 -N: 查看模式。 仅仅加载缓存信息,并不实际运行配置和生成步骤。 -P : 处理脚本模式。 将给定的 cmake 文件按照 CMake 语言编写的脚本进行处理。不执行配置和生成步骤, 不修改缓存信息。如果要使用-D 选项定义变量,-D 选项必须在-P 选项之前。 --graphviz=[file]: 生成依赖的 graphviz 图。 生成一个 graphviz 软件的输入文件,其中包括了项目中所有库和可执行文件之间的依 赖关系。 --system-information [file]: 输出与该系统相关的信息。
输出范围比较广的、与当前使用的系统有关的信息。如果在一个 CMake 工程的二进制 构建树的顶端运行该命令,它还会打印一些附加信息,例如缓存,日志文件等等。 --debug-trycompile: 不删除“尝试编译”路径。 不删除那些为 try_compile 调用生成的路径。这在调试失败的 try_compile 文件时比 较有用。不过,因为上一次“尝试编译”生成的旧的垃圾输出文件也许会导致一次不正确 通过/不通过,且该结果与上次测试的结果不同,所以该选项可能会改变“尝试编译”的结 果。对于某一次“尝试编译”,该选项最好只用一次;并且仅仅在调试时使用。 --debug-output: 将 cmake 设置为调试模式。 在 cmake 运行时,打印额外的信息;比如使用 message(send_error)调用得到的栈 跟踪信息。 --trace: 将 cmake 设置为跟踪模式。 用 message(send_error )调用,打印所有调用生成的跟踪信息,以及这些调用发生的 位置。(这句话含义不是很确定—译注。) --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 以及纯文本。
分享到:
收藏