小编Pej*_*man的帖子

使用 CMakeExternalProject_Add 构建 mongo-cxx-driver

我正在尝试构建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)

c++ cmake mongodb mongo-cxx-driver

4
推荐指数
1
解决办法
2931
查看次数

反序列化表示非根表的 Flatbuffers 二进制文件

是否可以反序列化表示非根表的二进制 Flatbuffers 对象?

假设以下平面缓冲区模式:

table Foo {
    ...
}
table Bar {
    value:[Foo];
}
root_type Bar;
Run Code Online (Sandbox Code Playgroud)

假设我们可以访问表示该Foo对象的二进制数据。是否可以将此二进制文件反序列化为类的对象Foo?查看我的 C++ 生成的头文件,我没有看到任何生成的函数,例如GetFoo().

c++ deserialization flatbuffers

4
推荐指数
1
解决办法
1155
查看次数