CMake外部项目未下载

时间:2016-07-13 14:45:47

标签: cmake

我正在将CMake 3.5.1与CLion一起使用,我正在尝试从URL下载并安装外部项目。我的CMakeLists.txt包括:

include(ExternalProject)
set(EXTERNAL ${PROJECT_SOURCE_DIR}/external)
ExternalProject_Add(eigen_test
        PREFIX ${EXTERNAL}/eigen
        DOWNLOAD_DIR ${EXTERNAL}/eigen/download
        SOURCE_DIR ${EXTERNAL}/eigen/src
        BINARY_DIR ${EXTERNAL}/eigen/build
        INSTALL_DIR ${EXTERNAL}/eigen/install
        URL http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz
        URL_MD5 4d0d77e06fef87b4fcd2c9b72cc8dc55
        CONFIGURE_COMMAND cd <BINARY_DIR> && cmake -D CMAKE_INSTALL_PREFIX=$<INSTALL_DIR> <SOURCE_DIR>
        )

构建时,directory structure是在${PROJECT_SOURCE_DIR}/external/

中创建的

虽然存在用于下载和提取项目的cmake文件,但这些操作永远不会发生。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

  1. 我没有理由通过在${PROJECT_SOURCE_DIR}下载和构建库来污染您的项目,我总是在${CMAKE_BINARY_DIR}中执行此操作。

  2. eigen库使用CMakeLists.txt,它将作为外部项目无缝工作,您无需为每个步骤进行广泛配置。因此,CONFIGURE_COMMAND可以被删除,安装前缀设置为CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=...

  3. 这是简化且有效的配置:

    include(ExternalProject)
    set(EXTERNALS_DIR ${CMAKE_BINARY_DIR}/external)
    ExternalProject_Add(eigen_test
        PREFIX ${EXTERNALS_DIR}
        URL http://bitbucket.org/eigen/eigen/get/3.2.4.tar.gz
        URL_MD5 4d0d77e06fef87b4fcd2c9b72cc8dc55
        CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNALS_DIR}/installed
        )
    

    如何使用该库:

    1. 添加${EXTERNALS_DIR}/installed/include以包含目录
    2. 构建eigen_test目标