最近做项目开发,需要在项目中使用第三方库。但是考虑到需要用到的太多,为了提高项目的可用性,决定将第三库封装到项目中。ExternalProject命令可以很好的解决这个问题
- 这里可以看一下官方网站对于ExternalProject的方法定义:https://cmake.org/cmake/help/v3.0/module/ExternalProject.html
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)
以后如果有补充还会回来更新的。