gpt4 book ai didi

cmake - 根据条件在 CMake 中执行多个后期构建命令

转载 作者:行者123 更新时间:2023-12-04 03:09:05 27 4
gpt4 key购买 nike

所以我对 ADD_EXTRA_STEP 有一些 cmake 定义这可以是 true 也可以是 false 并根据用户的需要进行设置。然后,在后期构建时,我必须执行一些命令。我目前有这样的事情:

    add_custom_command(TARGET ${some_target}
POST_BUILD
COMMAND <command to generate FOO.out>
COMMAND <command that uses FOO.out and generates FOO2.out>
COMMENT <some comment>
VERBATIM
)
add_custom_command(TARGET ${some_target}
POST_BUILD
COMMAND <some other command>
COMMENT <some other comment>
VERBATIM
)

现在介于两者之间 add_custom_command当且仅当 ADD_EXTRA_STEP 我需要执行另一个命令设置为真。问题是,要让它起作用,我需要保证 FOO2.out存在。到目前为止,我的想法是做这样的事情:
    add_custom_command(TARGET ${some_target}
POST_BUILD
COMMAND <command to generate FOO.out>
COMMAND <command that uses FOO.out and generates FOO2.out>
COMMENT <some comment>
VERBATIM
)
if(${ADD_EXTRA_STEP})
add_custom_command(TARGET ${some_target}
POST_BUILD
COMMAND <extra step command that uses FOO2.out>
COMMENT <some extra comment>
VERBATIM
)
endif()
add_custom_command(TARGET ${some_target}
POST_BUILD
COMMAND <some other command>
COMMENT <some other comment>
VERBATIM
)

但是,我怀疑这是否可行,以及以这种方式实现它是否是一种“良好”做法。换句话说,是否保证当 add_custom_command中的命令执行前面 add_custom_command中的命令(即生成 FOO2.out 的那个)是否已经执行?

提前致谢!

最佳答案

您需要结合add_custom_commandadd_custom_target

主要思想是使用OUTPUT add_custom_command的形式与 OUTPUT 一起迈出第一步等于 FOO2.out然后指定 FOO2.outDEPENDS在条件目标/命令中。是否使用add_custom_commandadd_custom_target取决于命令中的实际操作以及命令结果在后续步骤中的使用方式。考虑这个简单的例子:

add_executable(some_executable some_executable_source.c)
add_custom_command(OUTPUT FOO2.out
DEPENDS some_executable
COMMAND ${CMAKE_COMMAND} -E touch FOO2.out
COMMAND ${CMAKE_COMMAND} -E echo "creating FOO2.out"
)

if (${ADD_EXTRA_STEP})
add_custom_target(run ALL
${CMAKE_COMMAND} -E echo "executing extra step"
DEPENDS FOO2.out
)
endif()

在这种情况下,如果需要,将始终在创建 FOO2.out 后执行额外的步骤

关于cmake - 根据条件在 CMake 中执行多个后期构建命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33769077/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com