2

我目前正在帮助迁移一组 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
4

1 回答 1

4

如果您使用 CMake 版本 >= 2.8.8,则可以使用 Objects Library:

add_library(bar OBJECT a.c)

然后链接(实际上不是真正链接)它到 foo:

add_executable(foo main.cpp $<TARGET_OBJECTS:bar>)

并禁止:

add_executable(testfoo main.cpp $<TARGET_OBJECTS:bar>)

对象库不会创建库文件,而是以某种方式充当共享对象。您可以在此处找到更多信息:http ://www.cmake.org/Wiki/CMake/Tutorials/Object_Library

于 2013-06-27T18:38:52.207 回答