CMake测试用作git子模块的库

时间:2019-03-23 11:58:26

标签: git testing cmake

情况:您要开发一个使用CMake作为其(元)构建系统的库。该库仅是标头(实际上确实需要,该问题仍然适用),具有测试和示例(如基准)。可以通过安装库并使用生成的程序包文件来使用该库,也可以将其添加为git submodule并简单地add_subdirectory来使用(通常更容易避免ABI中的不匹配)。

问题:在该库中处理测试的最佳方法是什么?

通常,顶级CMake如下所示:

[...setup code, project(...)`]
add_library(foo src/foo.cpp)
target_include_libraries(foo PUBLIC include)

include(CTest)
if(BUILD_TESTING)
  add_subdirectory(tests)
endif()
if(FOO_BUILD_EXAMPLES)
  add_subdirectory(examples)
endif()
install(TARGETS foo ...)
install(...)

我的问题是,当将其用作子模块并且超级项目也使用include(CTest)BUILD_TESTING时,启用超级项目测试也会启用子模块测试。

这是应该做的事情吗?

类似于安装命令:安装超级项目也会安装子模块(我认为),这可能是错误的,因为给出的CMAKE_INSTALL_PREFIX用于超级项目,可能不适用于子模块。

这将导致使用前缀和选项,例如FOO_BUILD_TESTINGFOO_INSTALL,但我不认为它们经常使用。

我担心太多还是错过了什么?为git子模块构建(并运行)测试和安装的方式是什么?

0 个答案:

没有答案