如何在第一个错误上强制CMake失败

时间:2019-01-17 12:56:24

标签: cmake

我有一个“依赖多个目标”的目标。为了构建最终的可执行文件,我需要进行一些检查。如果这些都失败了,那么我想避免建立长期目标。所以我做到了:

add_custom_target(LongTarget)
add_custom_command(TARGET LongTarget
    COMMAND ${CMAKE_COMMAND} -E echo "BUILDING LongTarget")

add_custom_target(FinalTarget)
add_dependencies(FinalTarget LongTarget)
add_custom_command(TARGET FinalTarget PRE_BUILD
    COMMAND "CHECKS_FAIL")
add_custom_command(TARGET FinalTarget POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E echo "BUILDING FinalTarget")

但是LongTarget是首先构建的,并且检查仅在之后失败。看来这是因为(至少)在VS上不充分支持PRE_BUILD标志。

所以我尝试了:

add_custom_target(LongTarget)
add_custom_command(TARGET LongTarget
    COMMAND ${CMAKE_COMMAND} -E echo "BUILDING LongTarget")

add_custom_target(ChecksTarget)
add_custom_command(TARGET ChecksTarget COMMAND "CHECKS_FAIL")

add_custom_target(FinalTarget)
add_dependencies(FinalTarget ChecksTarget LongTarget)
add_custom_command(TARGET FinalTarget POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E echo "BUILDING FinalTarget")

现在,首先执行检查(并且失败),但是无论如何都建立了LongTarget。因此,我想在遇到错误时立即中止构建。

0 个答案:

没有答案