ExternalProject命令可以很好的解決項目中使用第三方庫,提高項目的可用性。
include(ExternalProject)
ExternalProject_Add(xxxxxx
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/xxxxxx
BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/xxxxxx
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/xxxxxx.sh xxxxxx
BUILD_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/xxxxxx.sh xxxxxx
INSTALL_COMMAND "")
add_custom_target(xxxxxx ALL
COMMAND echo "xxxxxx"
DEPENDS x1 x2 x3 x4
)
通過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}
)
2、最後是在項目根目錄下的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)
參考文獻: