CMake學習隨筆(1)---ExternalProject的使用
阿新 • • 發佈:2018-12-21
HICAS_Chameleon
CMake學習隨筆(1)—ExternalProject使用
最近做專案開發,需要在專案中使用第三方庫。但是考慮到需要用到的太多,為了提高專案的可用性,決定將第三庫封裝到專案中。ExternalProject命令可以很好的解決這個問題
Example: ExternalProject 安裝 gflag-2.2.2。
1.建立名為gflag-2.2.2.cmake的檔案,開啟編輯
目錄結構如下
在專案中建立名為Cmake的資料夾–>建立名為gflag-2.2.2.cmake的檔案
include(ExternalProject) set(GFLAG_ROOT ${CMAKE_BINARY_DIR}/thirdparty/gflag-2.2.2) set(GFLAG_LIB_DIR ${GFLAG_ROOT}/lib) set(GFLAG_INCLUDE_DIR ${GFLAG_ROOT}/include) set(GFLAG_URL https://github.com/gflags/gflags/archive/v2.2.2.zip) set(GFLAG_CONFIGURE cd ${GFLAG_ROOT}/src/gflag-2.2.2 && cmake -D CMAKE_INSTALL_PREFIX=${GFLAG_ROOT} .) set(GFLAG_MAKE cd ${GFLAG_ROOT}/src/gflag-2.2.2 && make) set(GFLAG_INSTALL cd ${GFLAG_ROOT}/src/gflag-2.2.2 && make install) ExternalProject_Add(gflag-2.2.2 URL ${GFLAG_URL} DOWNLOAD_NAME gflag-2.2.2.zip PREFIX ${GFLAG_ROOT} CONFIGURE_COMMAND ${GFLAG_CONFIGURE} BUILD_COMMAND ${GFLAG_MAKE} INSTALL_COMMAND ${GFLAG_INSTALL} )
首先需要include來載入ExternalProject,接下來設定了幾個變數。GFLAG_ROOT是用來指定編譯檔案輸出的路徑,GFLAG_LIB_DIR和GFLAG_INCLUDE_DIR宣告GFLAG動態庫和靜態庫的路徑,方便在其他CMake程式碼中使用。
剩下的四個變數代表了下載連結,配置,編譯,安裝的命令,根據你所需要安裝的第三方庫的不同這些命令也不同。需要注意的點是,使用GFLAG下載解壓後的檔案分為src和tmp,例如我需要進入src裡面的gflag-2.2.2來進行配置和安裝,這是一個需要注意的點。
接下來就可以使用ExternalProject_Add命令來使用我們剛剛設定的變量了,簡單易懂,從URL中下載檔案,命名為gflag-2.2.2.zip,設定輸出路徑,接下來就是三步走。
最後是在專案根目錄下的CMakeLists.txt中使用include呼叫這個cmake即可
include(cmake/gflag-2.2.2.cmake)
include(cmake/hwloc-1.11.cmake)
include(cmake/protobuf-2.6.1.cmake)
include(cmake/protobuf-2.6.1-compile.cmake)
以後如果有補充還會回來更新的。