从CTest构建自定义CMake目标



我有一个自定义目标,当"构建";,它是由属于外部依赖项的自定义函数提供给我的(即它对我来说是不透明的,我无法控制它的定义(。

如何调用构建此目标作为CTest测试用例?这被认为是反模式吗?

如果您能够配置添加自定义目标的cmake项目,那么您就可以看到添加该目标的cmike源。否则,这些资源将不可用。这将允许您将add_custom_target命令转换为等效的add_test命令。

如果你不应该研究提供测试用例的cmake逻辑,那么可以选择定义一个自定义cmake函数,该函数可以被调用来提取COMMAND参数等等。以便与add_custom_targetadd_test一起使用,因此如果您正在与创建";测试";逻辑,你可以重写他们的cmake逻辑。


如果您没有其他选择,您仍然可以创建一个构建特定目标的测试。

function(add_target_build_test TEST_NAME TARGET_NAME)
get_property(IS_MULTI_CONFIG_GENERATOR GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
set(CONFIG_PARAM)
if(IS_MULTI_CONFIG_GENERATOR)
set(CONFIG_PARAM --config $<CONFIG>)
endif()
add_test(NAME ${TEST_NAME} COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} ${CONFIG_PARAM} --target ${TARGET_NAME})
endfunction()
add_target_build_test(my_test extern_target)

如果可能的话,我会避免这样做。

最新更新