我有一个自定义目标,当"构建";,它是由属于外部依赖项的自定义函数提供给我的(即它对我来说是不透明的,我无法控制它的定义(。
如何调用构建此目标作为CTest测试用例?这被认为是反模式吗?
如果您能够配置添加自定义目标的cmake项目,那么您就可以看到添加该目标的cmike源。否则,这些资源将不可用。这将允许您将add_custom_target
命令转换为等效的add_test
命令。
如果你不应该研究提供测试用例的cmake逻辑,那么可以选择定义一个自定义cmake函数,该函数可以被调用来提取COMMAND
参数等等。以便与add_custom_target
或add_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)
如果可能的话,我会避免这样做。