我正在處理的項目依賴於Eigen3。以前,我只是讓最終用戶在配置步驟中手動指定Eigen3頭文件的路徑,但這已變得非常麻煩,我想將這些責任從用戶身上拿走。我已經建立了一個外部的CMake項目搶到通過HG庫:在已安裝ExternalProject後避免CMake子命令
message(STATUS "Looking for Eigen3 ")
find_package(Eigen3)
if(EIGEN3_FOUND)
message(STATUS "Looking for Eigen3 - found!")
else()
find_file(EIGEN3_IN_DEPS Eigen/Core ${PROJECT_BINARY_DIR}/deps/include/eigen3)
if(NOT EIGEN3_IN_DEPS)
message(STATUS "Looking for Eigen3 - not found!")
ExternalProject_Add(eigen3
PREFIX "${PROJECT_BINARY_DIR}/deps/eigen3"
HG_REPOSITORY "https://bitbucket.org/eigen/eigen"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/deps"
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
UPDATE_DISCONNECTED 1)
endif()
endif()
我遇到的問題是,現在我的CMake的生成Makefile文件總是運行Eigen3配置步每次我重新編譯時間我的問題。當然,對最終用戶來說,這通常不是一個問題,只有開發者纔會遇到。我寧願不必每次重新編譯都要等待此配置,有沒有辦法指定我應該嘗試從HG Repo配置Eigen3的唯一時間是初始構建?
難道是你交換了then和else的情況嗎?當找到特徵時您運行external_project。 – Finn
對不起,這只是因爲我需要測試它實際上會下載Eigen3 Repo(我的Eigen3安裝在我的系統上,所以Eigen3布爾值始終爲真)。我沒有在沒有Eigen3的機器上關閉該標誌。我會編輯反映! –
測試結果總是被緩存。你是否清理緩存文件或刪除你的構建目錄?那麼這種行爲是可以預料的 – usr1234567