mangrove (mongo-c-driver および mongo-cxx-driver 上の mongo ODM lib) を使用する必要があり、これを私のプロジェクトに 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 構成ファイルで機能するため、実際には必要ありません。ただし、確かに、私もコメントなしでチェックしました。
したがって、mongo-c-driver からのインクルードは、次にインクルードされる外部プロジェクトである mangrove に必要です。
現在のプロジェクトのインクルード パスに存在するいくつかのインクルード ファイルが見つからない 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
に含まれる CMake ベースのプロジェクトには、スクリプト内は影響しないようですExternalProject_Add
。
それらのインクルードパスを外部プロジェクトに渡すテクニックはありますか?