子模塊我有以下項目結構:CMake的項目有redudant依賴
root-project/
|-> CMakeLists.txt
|-> src/
|-> foo.cpp
|-> include/
|-> foo.hpp
|-> test/
|-> test_foo.cpp
|-> googletest/
|-> CMakeLists.txt
|-> ...
|-> libs/
|-> my-lib/
|-> CMakeLists.txt
|-> src/
|-> bar.cpp
|-> include/
|-> bar.hpp
|-> test/
|-> test_bar.cpp
|-> googletest/
|-> CMakeLists.txt
|-> ...
的root-project
建立所謂foo
的可執行文件依賴於庫my-lib
。 root-project
和my-lib
均使用googletest
進行測試,其中包含git-submodule
。
我已經接受了使用git-submodule
來獲得冗餘googletest
目錄的事實。但是,問題在於只需使用add_subdirectory
連接整個項目就會以多個gtest
目標結束。
我的問題:是有一個root-project
方式來構建my-lib
,只看到目標my-lib
,而不是測試目標googletest
? (即,可以將多餘googletest
是「隱藏」在生成過程中?)
我的第二個問題:給我的新秀CMake的狀態,沒有我在一個有缺陷的方式來組織這些項目?有沒有更好的方式來組織避免這個問題的項目?歡迎提供一些建設性的CMake建議!
你知道add_subproject嗎? – usr1234567
不是。但我想我應該熟悉它。 – nick
雖然它似乎並不存在:https://cmake.org/?s=add_subproject – nick