cmake:add_dependencies、add_test、add_link_options

小鱼儿 2022-10-11 13:48 189阅读 0赞

add_dependencies

在顶层目标之间添加依赖关系。

  1. add_dependencies(<target> [<target-dependency>]...)

使顶层< target >依赖于其他顶层目标,以确保它们在< target >之前构建。顶层目标是由add_executable()、add_library()或add_custom_target()命令之一创建的目标(但不是由CMake生成的类似于install的目标)。

添加到导入的目标或接口库中的依赖项在其位置上被传递,因为目标本身不构建。

3.3新版功能:允许向接口库添加依赖项。

请参阅add_custom_target()和add_custom_command()命令的DEPENDS选项,以便在自定义规则中添加文件级依赖项。请参阅OBJECT_DEPENDS源文件属性,将文件级依赖项添加到对象文件。

add_test

向要由ctest运行的项目添加测试(1)。

  1. add_test(NAME <name> COMMAND <command> [<arg>...]
  2. [CONFIGURATIONS <config>...]
  3. [WORKING_DIRECTORY <dir>]
  4. [COMMAND_EXPAND_LISTS])

添加名为< name >的测试。测试名称可以包含任意字符,如果需要,可以用引号参数或括号参数表示。参见政策CMP0110。选项包括:

  • COMMAND:指定测试命令行。如果< command >指定了一个可执行目标(由add_executable()创建),它将自动被构建时创建的可执行文件的位置所取代。
  • CONFIGURATIONS:将测试的执行限制在指定的配置上
  • WORKING_DIRECTORY

    • 设置WORKING_DIRECTORY测试属性以指定要在其中执行测试的工作目录。
    • 如果未指定,则运行测试时将当前工作目录设置为与当前源目录对应的构建目录。
  • COMMAND_EXPAND_LISTS

    • 3.16新版功能。
    • 命令参数中的列表将被展开,包括那些使用生成器表达式创建的列表。

如果设置了WILL_FAIL测试属性,则给定的测试命令将退出,代码0表示通过,非0表示失败,反之亦然。任何写入到stdout或stderr的输出都将被ctest(1)捕获,但不会影响通过/失败状态,除非使用了PASS_REGULAR_EXPRESSION、FAIL_REGULAR_EXPRESSION或SKIP_REGULAR_EXPRESSION测试属性。

看个例子:

  1. add_test(NAME mytest
  2. COMMAND testDriver --config $<CONFIG>
  3. --exe $<TARGET_FILE:myexe>)

这将创建一个测试mytest,它的命令运行一个testDriver工具,传递配置名和目标myexe生成的可执行文件的完整路径。

注意,只有在调用了enable_testing()命令时,CMake才会生成测试。CTest模块会自动调用该命令,除非BUILD_TESTING选项被关闭。

  1. add_test(<name> <command> [<arg>...])

使用给定的命令行添加一个名为< name >的测试。与上面的NAME签名不同,没有在命令行上执行转换以支持目标名称或生成器表达式。

add_link_options

3.13新版功能。

为当前目录下的可执行库、共享库或模块库目标添加选项到链接步骤,这些选项是在调用此命令后添加的

  1. add_link_options(<option> ...)

此命令可用于添加任何链接选项,但也有其他命令用于添加库(target_link_libraries()或者link_libraries())。请参阅目录和目标LINK_OPTIONS属性的文档。

注意:此命令不能用于为静态库目标添加选项,因为它们不使用链接器。要添加archiver或MSVC LIBRARY标志,请参见STATIC_LIBRARY_OPTIONS目标属性。

发表评论

表情:
评论列表 (有 0 条评论,189人围观)

还没有评论,来说两句吧...

相关阅读