如何从add_custom_target/command调用CMake函数?

Mar*_*n M 15 c++ cmake target add-custom-command

是否有可能调用一个函数的CMake出的add_custom_target还是add_custom_command

我知道我可以将CMake函数移动到Python(或其他)脚本并从add_custom_target/中调用它,command但我想避免在现有的CMake基础上使用大量脚本.

我想要实现的是使用CPack生成二进制工件的zip包并将其发布到工件库中.对于发布部分,我已经创建了CMake函数,但现在我需要将打包和发布结合在一起.

感谢您提前提供任何帮助/提示.

Ada*_*rek 23

我在为BVLC/Caffe编写CMake构建系统时遇到了这个问题.我最后做的是将函数内容放入一个单独的CMake脚本中,并add_custom_target通过调用从内部调用它:

add_custom_target(target_name
    COMMAND ${CMAKE_COMMAND} -P path_to_script
)
Run Code Online (Sandbox Code Playgroud)

使用-P标志调用CMake 使其充当脚本语言.您可以在脚本中放置任何CMake函数.

  • 令我难以置信的是,你不能直接从add_custom_command中调用像FILE这样的cmake命令 (10认同)
  • 实际上,我发现它并不能向子CMake脚本添加一堆-D切换为“转发”现有定义:add_custom_command(OUTPUT Dockerfile.base COMMAND $ {CMAKE_COMMAND} -D DISTRO_NAME = $ {DISTRO_NAME } -D DISTRO_VERSION = $ {DISTRO_VERSION} -D PROJECT_TEMPLATE_DIR = $ {PROJECT_TEMPLATE_DIR} -P $ {CMAKE_MODULE_PATH} /ConfigureDockerfileBase.cmake注释“配置Dockerfile.base文件。” (2认同)