我正在处理的项目依赖于Eigen3。以前,我只是让最终用户在配置步骤中手动指定Eigen3头文件的路径,但这已变得非常麻烦,我想将这些责任从用户身上拿走。我已经建立了一个外部的CMake项目抢到通过HG库:在已安装ExternalProject后避免CMake子命令
message(STATUS "Looking for Eigen3 ")
find_package(Eigen3)
if(EIGEN3_FOUND)
message(STATUS "Looking for Eigen3 - found!")
else()
find_file(EIGEN3_IN_DEPS Eigen/Core ${PROJECT_BINARY_DIR}/deps/include/eigen3)
if(NOT EIGEN3_IN_DEPS)
message(STATUS "Looking for Eigen3 - not found!")
ExternalProject_Add(eigen3
PREFIX "${PROJECT_BINARY_DIR}/deps/eigen3"
HG_REPOSITORY "https://bitbucket.org/eigen/eigen"
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/deps"
"-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
UPDATE_DISCONNECTED 1)
endif()
endif()
我遇到的问题是,现在我的CMake的生成Makefile文件总是运行Eigen3配置步每次我重新编译时间我的问题。当然,对最终用户来说,这通常不是一个问题,只有开发者才会遇到。我宁愿不必每次重新编译都要等待此配置,有没有办法指定我应该尝试从HG Repo配置Eigen3的唯一时间是初始构建?
难道是你交换了then和else的情况吗?当找到特征时您运行external_project。 – Finn
对不起,这只是因为我需要测试它实际上会下载Eigen3 Repo(我的Eigen3安装在我的系统上,所以Eigen3布尔值始终为真)。我没有在没有Eigen3的机器上关闭该标志。我会编辑反映! –
测试结果总是被缓存。你是否清理缓存文件或删除你的构建目录?那么这种行为是可以预料的 – usr1234567