2016-02-10 37 views
1

我使用CMake構建的項目使用Google測試進行測試。我的測試中的CMakeLists.txt文件看起來是這樣的:用cmake分隔googletest測試用例

add_executable(run_tests 
    testcase_a.cpp 
    dependency_a.cpp 
    testcase_b.cpp 
    dependency_b.cpp 
) 
target_link_libraries(run_tests gtest gtest_main) 

隨着越來越多的測試用例數,這變得相當混亂。我想分別編譯每個測試用例,然後使用單個二進制文件運行它們。這可以使用CMake和gtest_main完成嗎?還是有更好的方法來做到這一點,我錯過了?

回答

0

這裏的基本思想是: -

add_library(testcase_a.o OBJECT testcase_a.cpp dependency_a.cpp) 
add_library(testcase_b.o OBJECT testcase_b.cpp dependency_b.cpp) 
add_executable(run_tests $<TARGET_OBJECTS:testcase_a.o> $<TARGET_OBJECTS:testcase_b.o>) 
target_link_libraries(run_tests gtest gtest_main) 

Object Libraries

+0

這看起來像解決方案,我需要。但是,我無法正確鏈接run_tests可執行文件 - 這些庫抱怨缺少對gtest函數的引用。 – Teyras

+0

@Teyras如果您可以發佈[MVCE](http://stackoverflow.com/help/mcve)您的連接失敗,也許我可以看到有什麼問題。現在只能說它適用於我。確保你已經使用編譯器構建了你的libgtest和libgtest_main,這個編譯器現在正在構建你的'run_tests'。 –

+0

好吧,一個最小的設置似乎工作。我會標記你的答案是正確的,並嘗試自己解決我的問題。 – Teyras