gpt4 book ai didi

c++ - 已安装 ExternalProject 后避免使用 CMake 子命令

转载 作者:行者123 更新时间:2023-11-28 06:02:39 27 4
gpt4 key购买 nike

我正在处理的项目依赖于 Eigen3。以前,我只是让最终用户在配置步骤中手动指定 Eigen3 header 的路径,但这变得很麻烦,我想从用户身上承担一些责任。我已经设置了一个 CMake 外部项目来通过以下方式获取 HG 存储库:

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 always 每次重新编译我的问题时都会运行 Eigen3 配置步骤。诚然,对于最终用户而言,这通常不是问题,而只是开发人员。我不想每次重新编译时都等待这个配置,有没有办法指定我应该尝试从 HG Repo 配置 Eigen3 的唯一时间是初始构建?

最佳答案

一个明显但不太理想的答案:再次运行 CMake。第一次运行 CMake 和构建时,将获取、配置和构建 Eigen3。第二次运行 CMake 时,find_package 将定位 Eigen3,生成的 Makefile 将不需要配置和构建 Eigen3。这假设 ExternalProject_Add 将 Eigen3 放在 find_package 可以找到的位置,这可以通过在 these guidelines 之后将 Eigen3 前缀添加到您的 CMAKE_PREFIX_PATH 来完成。 .

虽然我对“再次运行它”的回答感到畏缩,但在这种情况下还不错。不需要第二次运行 cmake,您的构建将始终按预期在第一次运行。第二次调用是优化。

关于c++ - 已安装 ExternalProject 后避免使用 CMake 子命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32954377/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com