我目前正在帮助迁移一组Visual Studio项目以使用CMake。目前,所有项目都已迁移并正在建设中。但是,我们还没有重新整合我们的单元测试。
有没有办法为单元测试创建单独的可执行文件而无需重新编译依赖项目的所有源文件?换句话说,是否有一种简单的方法可以让测试项目链接到依赖项目生成的目标文件?
以下是两个项目的示例结构:应用程序和测试:
Foo
bar.cpp
baz.cpp
main.cpp // entry for app executable
TestFoo
test-bar.cpp // requires linking to bar
test-baz.cpp // requires linking to baz
main.cpp // entry for test executable
答案 0 :(得分:4)
如果使用CMake版本> = 2.8.8,则可以使用Objects Library:
add_library(bar OBJECT a.c)
然后链接(事实上并没有真正链接)它到foo:
add_executable(foo main.cpp $<TARGET_OBJECTS:bar>)
和bar:
add_executable(testfoo main.cpp $<TARGET_OBJECTS:bar>)
对象库不会创建库文件,而是以某种方式作为共享对象。您可以在此处找到更多信息:http://www.cmake.org/Wiki/CMake/Tutorials/Object_Library