【问题标题】:CMake External Project not DownloadingCMake 外部项目未下载
【发布时间】:2018-06-05 00:36:54
【问题描述】:

我正在使用带有 CLion 的 CMake 3.5.1,并且我正在尝试从 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 文件,但这些操作永远不会发生。我在这里做错了什么?

【问题讨论】:

  • Although the cmake files exist to download and extract the project, these actions never occur. - 那么,当您构建项目时会发生什么?

标签: cmake


【解决方案1】:
  1. 我认为没有理由通过在 ${PROJECT_SOURCE_DIR} 中下载和构建库来污染您的项目,我总是在 ${CMAKE_BINARY_DIR} 中这样做。

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

这是简化且有效的配置:

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 目标

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2020-01-06
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多