第一个目标始终会重新运行:
add_custom_target(testcmake1 COMMAND ${CMAKE_COMMAND} -E echo "Running testcmake1 step 1")
add_custom_command(TARGET testcmake1 COMMAND ${CMAKE_COMMAND} -E echo "Running testcmake1 step 2")
输出为:
1>Running testcmake1 step 1
1>Running testcmake1 step 2
但是,此目标在首次运行时会产生相同的结果,但是随后的任何构建都不输出:
add_custom_target(testcmake2)
add_custom_command(TARGET testcmake2 COMMAND ${CMAKE_COMMAND} -E echo "Running testcmake2 step 1")
add_custom_command(TARGET testcmake2 COMMAND ${CMAKE_COMMAND} -E echo "Running testcmake2 step 2")
知道我在做什么错吗?
答案 0 :(得分:0)
在第二种情况下,将创建一个没有输出的空目标。要从Visual Studio 2017 GUI运行它,您需要右键单击目标并选择“仅项目”链接目标。
在第一种情况下,它不是一个空目标。要从GUI运行它,选择仅项目构建目标就足够了。
从命令行运行时,它会直接调用MSBuild.exe,因此它将按预期工作。
它确实暴露了add_custom_target(testcmake2 ALL)
的错误,因为在构建ALL
目标时它从未运行。