我正在将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文件,但这些操作永远不会发生。我在这里做错了什么?
答案 0 :(得分:0)
我没有理由通过在${PROJECT_SOURCE_DIR}
下载和构建库来污染您的项目,我总是在${CMAKE_BINARY_DIR}
中执行此操作。
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
)
如何使用该库:
${EXTERNALS_DIR}/installed/include
以包含目录eigen_test
目标