1. 程式人生 > >CMake學習隨筆(1)---ExternalProject的使用

CMake學習隨筆(1)---ExternalProject的使用

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)

以後如果有補充還會回來更新的。