2
我試圖編寫庫中的類的單元測試。建立lib和 測試是用CMake完成的。單元測試與CMake沒有重複編譯
├── CMakeLists.txt
├── src
│ ├── Bar.cpp
│ ├── CMakeLists.txt
│ └── Foo.cpp
└── test
├── BarTest.cpp
├── CMakeLists.txt
└── FooTest.cpp
src/CMakeLists.txt
只不過是add_library(Example Foo.cpp Bar.cpp)
。 而且因爲我想打造的單元測試,而不構建庫(即 如果我做出改變說Foo
我可以,而不必與Bar
的 互動已運行工作的單元測試。所以test/CMakeLists.txt
看起來像 這樣的:
add_executable(FooTest FooTest.cpp ${CMAKE_SOURCE_DIR}/src/Foo.cpp)
add_test(bla::FooTest ${CMAKE_CURRENT_BINARY_DIR}/FooTest)
add_executable(BarTest BarTest.cpp ${CMAKE_SOURCE_DIR}/src/Bar.cpp)
add_test(bla::BarTest ${CMAKE_CURRENT_BINARY_DIR}/BarTest)
但是,這導致在每一個源文件是建立兩次:
[ 11%] Building CXX object src/CMakeFiles/Example.dir/Foo.o
[ 22%] Building CXX object src/CMakeFiles/Example.dir/Bar.o
[ 33%] Linking CXX static library libExample.a
[ 33%] Built target Example
[ 44%] Building CXX object test/CMakeFiles/FooTest.dir/FooTest.o
[ 55%] Building CXX object test/CMakeFiles/FooTest.dir/__/src/Foo.o
[ 66%] Linking CXX executable FooTest
[ 66%] Built target FooTest
[ 77%] Building CXX object test/CMakeFiles/BarTest.dir/BarTest.o
[ 88%] Building CXX object test/CMakeFiles/BarTest.dir/__/src/Bar.o
[100%] Linking CXX executable BarTest
[100%] Built target BarTest
是否有可能避免這也就是說,如果我有建src/Foo.cpp
b對於 單元測試之前,不要再爲一個庫建立它?所有的標誌都是一樣的。