我基本上問的問題與問here相同。但問題尚未得到解答。如何在ExternalProject_Add()完成下載後使用add_subdirectory()?
我想在我的項目中使用googletest。爲此,我使用ExternalProject_Add(),它使用git克隆測試套件。之後,我喜歡使用add_subdirectory()
。
這也是在official repository中描述的內容。這種方法的好處在於,googletest中的構建腳本負責處理構建過程。
但問題是,add_subdirectory()
找不到源文件夾,因爲它從一開始就不存在。因此,add_subdirectory()
應取決於ExternalProject_Add()
的完成情況。
是否有可能使add_subdirectory()
依賴於ExternalProject_Add()
,就像add_dependencies()對目標做的那樣?
PS。如果我評論add_subdirectory()
,我可以編譯它,編譯它(由於googletest庫缺失而以錯誤結尾),取消註釋並重新構建它(成功)。
ExternalProject_Add(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG master
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)
ExternalProject_Get_Property(googletest source_dir binary_dir)
set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include)
set(GMOCK_INCLUDE_DIR ${source_dir}/googlemock/include)
add_subdirectory(${source_dir}
${binary_dir})
使用'ExternalProject_Add()'添加的項目只在構建時被下載,IIRC。 – tambre
[這裏是](https://github.com/Gluttton/munkres-cpp/blob/devel/tests/CMakeLists.txt)完整的依賴工作示例。 – Gluttton