• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2019-10-02 05:38 Aet 隐藏边栏 |   抢沙发  3 
文章评分 1 次,平均分 5.0

add_custom_command

为生产的构建系统添加一条自定义的构建规则

这种命令格式定义了一条生成指定文件或文件组的生成命令。在相同路径下创建的CMakeLists文件,对于这个CMakeLists文件来说,任何自定义命令的输出都作为它的源文件,而这些源文件,都被设置了一条规则
什么规则呢?
在构建的时候,使用指定的规则来生成这些文件。如果,一个输出文件名是相对路径,它将被解释成相对于构建树路径的相对路径,别且与当前源码路径是相应的。
注意
MAIN_DEPENDENCY完全是可选的,它用来向Visual Studio建议在哪个地方停止自定义命令

这种命令格式为一个目标添加一条自定义命令
目标,比如库文件或者可执行文件
这种格式可以用于目标构建前或者构建后的一些操作。
这条命令会成为目标的一部分,并且,只有目标被构建时它才会执行。如果目标已经构建了,将不会执行。

PRE_BUILD 在所有其他依赖之前执行
PRE_LINK 在所有其他的依赖之后执行
POST_BUILD 在目标在构建之后执行

add_definitions

  • 为源文件的编译添加由-D引入的define flag

    • 再编译器的命令行上,为当前路径以及下层路径的源文件加入一些define flag。
    • 这个命令可以引入任何flag,但是他的愿意是用来引入预处理器的定义
    • 那些以-D或者/D开头的,看起来像是预处理器定义的flag,会被自动加入到当前路径的COMPILE_DEFINITIONS属性中

add_dependencies

为顶层目标引入一个依赖关系

  • 让一个顶层目标依赖于其他的顶层目标
  • 一个顶层目标是由命令ADD_EXECUTABLE,ADD_LIBRARY或者是,ADD_CUSTOM_TARGET产生的目标

add_executable

  • 使用给定得源文件,为工程引入一个可执行文件

    • 可执行目标名是
    • 该目标会由调用该命令时在源文件列表中指定得源文件来构建
    • 对应于逻辑目标名字,并且在工程范围内必须是全局唯一的。
  • 如果指定了MACOSX_BUNDLE选项,对应的属性会附加在创建的目标上
  • 如果指定了EXCLUDE_FROM_ALL选项,对应的属性会附加在创建的目标上
  • 如果使用下面的格式,可以用来创建导入的可执行目标
  • 示例代码

add_library

  • 使用指定的源文件向工程中添加一个库
  • 添加一个名为的库文件,这个库文件会根据调用的命令里列出的源文件来创建
  • 对应于逻辑目标名称,且再一个工程的全局域内必须是唯一的
  • 库文件名称将根据对应平台的命令约定来构造
    • lib.a
    • .lib
  • 可以指定参数来指定要创建的库的类型
    • STATIC
      • 库是目标文件的归档文件,在链接其他目标的时候使用
    • SHARED
      • 库会被动态链接,在运行时被加载
    • MODULE
      • 库是不会被链接到其他目标中的插件,但是可能会在运行时使用dlopen-系列的函数动态链接
    • 如果没有类型被显示指定,这个选项会根据BUILD_SHARED_LIBS的当前值是否为真来决定是STATIC还是SHARED
    • 导入的库目标是引用了在工程外的一个库文件的目标
    • 并没有生成构建这个库的规则
    • 这个目标名字的作用域在它被创建的路径及以下有效

add_subdirectory

  • 为构建添加一个子路径
  • source_dir指定了CMakeLists.txt源文件和代码文件的位置
    • 如果这个source_dir是一个相对路径,那么source_dir选项会被解释为相对于当前的目录
    • 它可以是绝对路径
  • binary_dir指定了输出文件的路径
    • 如果这个binary是一个相对路径,那么它会被解释为相对于当前输出路径
    • 它可以是绝对路径
    • 如果没有指定binary_dir,binary_dir的值将会是没有做任何相对路径展开的source_dir。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2021-11-21
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享