我正在尝试构建mongo-cxx-driver一个基于 CMake 的项目。这个项目应该在 Windows、macOS 和 ubuntu 容器中构建,我想确保所有这些平台上的软件将使用相同的驱动程序版本,因此我无法通过 等方式安装驱动程序及其依赖项。apt-get所以brew我只剩下一个选项:ExternalProject_Add。但鉴于设置方式,我很难完成这项工作libmongoc。下面是我目前拥有的 CMake 模块。
include(ExternalProject)
set(libmongoc_CMAKE_ARGS
"-DCMAKE_BUILD_TYPE:STRIING=${CMAKE_BUILD_TYPE}"
"-DENABLE_TESTS:BOOL=OFF"
"-DENABLE_STATIC:BOOL=OFF"
"-DENABLE_EXAMPLES:BOOL=OFF"
"-DENABLE_EXTRA_ALIGNMENT:BOOL=OFF"
)
set(mongocxx_CMAKE_ARGS
"-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
"-DCMAKE_BUILD_TYPE:STRIING=${CMAKE_BUILD_TYPE}"
"-DBUILD_SHARED_LIBS:BOOL=ON"
"-DENABLE_TESTS:BOOL=OFF"
"-DENABLE_EXAMPLES:BOOL=OFF"
"-DBSONCXX_POLY_USE_BOOST:BOOL=ON"
"-DBSONCXX_POLY_USE_MNMLSTC:BOOL=OFF"
"-Dlibbson-1.0_DIR:PATH=${OTS_DEPDENDENCIES_DIR}/libmongoc/src/libbson"
)
if (NOT TARGET libmongoc)
ExternalProject_Add(
libmongoc
GIT_REPOSITORY "https://github.com/mongodb/mongo-c-driver.git"
GIT_TAG "1.12.0"
SOURCE_DIR "${OTS_DEPDENDENCIES_DIR}/libmongoc"
BINARY_DIR "${OTS_DEPDENDENCIES_DIR}/libmongoc"
CMAKE_ARGS "${libmongoc_CMAKE_ARGS}"
INSTALL_COMMAND ""
)
endif()
if (NOT TARGET mongocxx)
ExternalProject_Add(
mongocxx
GIT_REPOSITORY "https://github.com/mongodb/mongo-cxx-driver.git"
GIT_TAG "r3.3.1"
SOURCE_DIR "${OTS_DEPDENDENCIES_DIR}/mongocxx"
BINARY_DIR "${OTS_DEPDENDENCIES_DIR}/mongocxx"
CMAKE_ARGS "${mongocxx_CMAKE_ARGS}"
INSTALL_COMMAND ""
DEPENDS libmongoc
)
endif() …Run Code Online (Sandbox Code Playgroud) 是否可以反序列化表示非根表的二进制 Flatbuffers 对象?
假设以下平面缓冲区模式:
table Foo {
...
}
table Bar {
value:[Foo];
}
root_type Bar;
Run Code Online (Sandbox Code Playgroud)
假设我们可以访问表示该Foo对象的二进制数据。是否可以将此二进制文件反序列化为类的对象Foo?查看我的 C++ 生成的头文件,我没有看到任何生成的函数,例如GetFoo().