【发布时间】:2021-05-22 01:05:03
【问题描述】:
我需要修改一个 C++ 项目以使用 Cereal 库。本项目的构建系统基于 CMake。由于 Cereal 是一个只有头文件的库并且也使用 CMake,我希望这是一个非常简单的任务。我尝试使用以下方法编辑CMakeLists.txt:
include(ExternalProject)
ExternalProject_Add(cereal
GIT_REPOSITORY git@github.com:USCiLab/cereal.git
CMAKE_ARGS -DJUST_INSTALL_CEREAL=ON -DSKIP_PORTABILITY_TEST=ON -DBUILD_TESTS=OFF
PREFIX ${CMAKE_INSTALL_PREFIX})
但不知何故cmake 试图在/usr/local 下安装cereal。我感谢任何可以为我指明正确方向的帮助。
【问题讨论】:
-
您是否尝试在您的 CMake 文件中更改此部分:
-DJUST_INSTALL_CEREAL=ON? -
感谢您的建议。事实上,我什至不需要
CMAKE_ARGS,因为不需要配置或安装谷物。 -
如果 FetchContent 是仅标头库,而不是 ExternalProject,则需要 FetchContent
-
感谢@AlexReinking,我试过
FetchContent_Declare( cereal GIT_REPOSITORY git@github.com:USCiLab/cereal.git ) FetchContent_MakeAvailable(cereal),它可以工作,但我仍然需要添加include_directories( ${CMAKE_BINARY_DIR}/_deps/cereal-src/include),否则构建找不到谷物。 -
我应该添加更多信息。 Cereal 确实是一个可选依赖项,实际代码使用宏
__has_include检查谷物。如果我没有include_directories麦片,该宏将返回 false。
标签: c++ installation cmake cereal header-only