C++ 如何从添加\自定义\目标/命令调用CMake函数?

C++ 如何从添加\自定义\目标/命令调用CMake函数?,c++,cmake,target,add-custom-command,C++,Cmake,Target,Add Custom Command,是否可以从add_custom_目标或add_custom_命令调用CMake函数 我知道我可以将CMake函数移动到Python(或其他)脚本中,并从add\u custom\u target/命令调用它,但我希望避免在现有的CMake infra旁边有大量脚本 我想要实现的是使用CPack生成二进制工件的zip包,并将它们发布到工件存储库中。对于发布部分,我已经创建了CMake函数,但是现在我需要将打包和发布结合起来 提前感谢您的帮助/提示。我在为编写CMake构建系统时遇到了这个问题。我最

是否可以从
add_custom_目标
add_custom_命令
调用CMake函数

我知道我可以将CMake函数移动到Python(或其他)脚本中,并从
add\u custom\u target
/
命令
调用它,但我希望避免在现有的CMake infra旁边有大量脚本

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


提前感谢您的帮助/提示。

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

add_custom_target(target_name
    COMMAND ${CMAKE_COMMAND} -P path_to_script
)

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

我寻找了相同的函数,几分钟后我意识到这是不可能的,因为CMake是一个构建生成器


此命令将在不同的时间运行,例如,在您的IDE中,当cmake不存在时。

这让我感到奇怪,您不能直接从add_custom_命令中调用类似FILE的cmake命令看起来很有趣,是否保留了父cmake文件定义?实际上,我发现它没有,但您可以添加一堆-D切换到“转发”现有定义到子CMake脚本:add_custom_命令(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_模块路径}/ConfigureDockerfileBase.cmake注释“configuretheDockerfile.base文件。”)如果我想实现这样的逻辑:仅在定义变量时执行该脚本,该怎么办?我应该如何在
add\u custom\u target
中写入此内容@当函数位于
.cmake
文件中时,AdamWorks非常好,是否有选项调用同一CMakeLists.txt文件中定义的函数@亚当·科西奥利克