gpt4 book ai didi

c++ - cmake include_directories 传递给 externaproject_add

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

我需要使用 mangrove(基于 mongo-c-driver 和 mongo-cxx-driver 的 mongo ODM 库)并将其作为 CMake ExternalProject_Add 命令包含到我的项目中,依赖项为 mongo-c -驱动程序/mongo-cxx-驱动程序

# mongo-c-driver
ExternalProject_Add(mongo-c-driver
GIT_REPOSITORY https://github.com/mongodb/mongo-c-driver.git
GIT_TAG r1.12
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LOCATION} -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF
# CMAKE_ARGS -DINCLUDE_DIRECTORIES=${EXTERNAL_INSTALL_LOCATION}/include/libbson-1.0 ${EXTERNAL_INSTALL_LOCATION}/include/libmongoc-1.0
)

#include_directories(${EXTERNAL_INSTALL_LOCATION}/include/libbson-1.0
# ${EXTERNAL_INSTALL_LOCATION}/include/libmongoc-1.0)
#link_directories(${EXTERNAL_INSTALL_LOCATION}/lib)

include_directories 这里的命令并不是真正需要的,因为 mongoc 的 cmake 配置文件使它起作用。但是,可以肯定的是,我也检查了未注释的内容。

因此,下一个包含的外部项目 - mangrove 需要来自 mongo-c-driver 的包含。

由于 c++ 错误未找到一些包含文件而失败,这些文件存在于当前项目的包含路径中。所以看起来包含的外部项目没有使用当前的 CMake 包含,这是以前由另一个外部项目添加的

# mangrove
ExternalProject_Add(mangrove
GIT_REPOSITORY https://github.com/aospan/mangrove.git
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LOCATION} -DCMAKE_INCLUDE_DIRECTORIES_BEFORE=${EXTERNAL_INSTALL_LOCATION}/include/libbson-1.0
)

ExternalProject_Add_StepDependencies(mangrove build mongo-c-driver mongo-cxx-driver)

include_directories(${EXTERNAL_INSTALL_LOCATION}/include/libbson-1.0
${EXTERNAL_INSTALL_LOCATION}/include/libmongoc-1.0)
link_directories(${EXTERNAL_INSTALL_LOCATION}/lib)

似乎脚本中的 include_directories 不会影响 ExternalProject_Add 包含的基于 CMake 的项目。

有没有一种技术可以将这些包含路径传递给外部项目?

最佳答案

您使用了错误的宏。 CMAKE_INCLUDE_DIRECTORIES_BEFORE 仅指示 include-directories 的工作方式并且是 flag .

没有其他选项可以设置适当的变量,以便外部 CMakeLists.txt 使用 find_path 来填充 bson.h 的路径。如果没有,那么我建议您修补 CMakeLists.txt 以使用 find_path 并发出拉取请求。

编辑:

似乎 mangrove 项目有一种方法可以使用 ENABLE_BSON 设置所有这些。如果默认的 AUTO 不起作用,您可以手动设置 BSON_VERSIONBSON_INCLUDE_DIRSBSON_LIBRARIES

关于c++ - cmake include_directories 传递给 externaproject_add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53971738/

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