Mue*_*ito 5 c++ cmake gnu-make
我正在使用 CMake 构建一个测试可执行文件。在构建过程中,我想运行可执行文件,它返回测试是否通过。如果没有,我希望构建失败。但是,当我使用add_custom_command(... POST_BUILD ... ), 并使用Makefile生成器时,测试可执行文件将被删除(在这个问题中解释:Why does GNU make delete a file)。
有没有办法让 CMake 将可执行文件视为.PRECIOUS,或者以其他方式更改 CMakeLists.txt 以便在测试失败时不会删除可执行文件?
作为参考,我的 CMakeList.txt 如下所示(从实际简化):
add_executable(UnitTest unittest.cpp)
add_custom_command(TARGET UnitTest POST_BUILD COMMAND $<TARGET_FILE:UnitTest>)
Run Code Online (Sandbox Code Playgroud)
我提到的解决方案是使用add_custom_target而不是add_custom_command. 虽然如果测试失败它不会删除可执行文件,并且如果 runUnitTest 失败则整个构建过程也会失败,但此目标不会因专门构建 UnitTest 目标而构建。
add_executable(UnitTest unittest.cpp)
add_custom_target(runUnitTest UnitTest COMMAND $<TARGET_FILE:UnitTest> DEPENDS UnitTest)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2850 次 |
| 最近记录: |