CMake详解之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)

以后如果有补充还会回来更新的。

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值