我需要使用 mangrove(mongo ODM lib over mongo-c-driver 和 mongo-cxx-driver)并将其作为 CMakeExternalProject_Add
命令包含在我的项目中,依赖项为 mongo-c-driver/mongo-cxx-driver
# 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
.
有没有一种技术可以将这些包含路径传递给外部项目?