我在CLion(C ++ + CMake)中创建了一个项目,其中有一个具有2种配置的共享库项目。释放。我还为单元测试实现了google测试。
当配置为发布时,我想在构建之前运行一些测试(或全部)。如果测试失败,则应该不构建库。
这可能吗?如果可以,怎么办?
答案 0 :(得分:0)
我找到了add_custom_command()
的答案。
在我的主要 CMakeLists.txt 中,我有
if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
#Rebuild the tests just in case some tests has changed and the executable was not rebuild
add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD
COMMAND ${CMAKE_COMMAND} --build "${CMAKE_BINARY_DIR}" --target tests --
)
if(${WIN32})
set(TESTS_BIN tests.exe)
else()
set(TESTS_BIN tests)
endif()
#Run the tests executable
add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD
COMMAND "${CMAKE_BINARY_DIR}/${TESTS_BIN}"
)
endif()
add_custom_command()
很聪明,因此当 tests 可执行文件未返回0(所有测试均已成功通过)时,构建将失败,并且将不会构建库。