mongo-cxx 驱动程序找不到 unique_ptr 的 polyfill
mongo-cxx driver cannot find polyfill for unique_ptr
我正在尝试在 Windows 上构建 mongo-cxx-driver
;我正在关注 instructions,但出现错误:
C1189 #error: "Cannot find a valid polyfill for make_unique"
这是我所做的:
建筑mongo-c-driver
我使用指定的最低版本 (1.15) 克隆了 mongo-c-driver
:
git clone https://github.com/mongodb/mongo-c-driver --branch r1.15
使用 CMake-Gui(我使用的是 3.18.2),我使用 Visual Studio 16 2019 Generator 生成了 .proj 文件。我使用了默认设置:
编译成功,我可以在C:\Program Files (x86)\mongo-c-driver
.
中找到对应的.dll和.lib文件
建筑 mongo-cxx-驱动程序
我使用我想要的版本克隆了项目(与mongo-c-driver
的上述版本兼容):
git clone https://github.com/mongodb/mongo-cxx-driver --branch releases/v3.5
我使用Cmake-Gui配置CMake参数,配置我安装的路径mongo-c
:
注意事项:
- 我没有填写
bson-1.0_DIR
或 mongoc-1.0_DIR
因为我不知道他们在找什么。
- 我设置
BSONCXX_POLY_USE_STD=1
因为我正在使用 C++17 并且不想使用 std::experimental
或 Boost。
我试图在 Visual Studio 中编译它,并得到了关于没有为 make_unique
找到有效的 polyfill 的上述错误。我哪里错了?
谢谢!
答案好像在installation guide,我漏了一步:
For building with Visual Studio 2017 (without a C++17 polyfill), it is
necessary to configure with an additional option, /Zc:__cplusplus to
opt into the correct definition of __cplusplus (problem described
here):
'C:\Program Files (x86)\CMake\bin\cmake.exe' ..
-G "Visual Studio 15 2017 Win64"
-DCMAKE_CXX_STANDARD=17
-DCMAKE_CXX_FLAGS="/Zc:__cplusplus"
-DCMAKE_PREFIX_PATH=C:\mongo-c-driver
-DCMAKE_INSTALL_PREFIX=C:\mongo-cxx-driver \
我根据需要添加了“/Zc:__cplusplus”标志并且编译正常!
我正在尝试在 Windows 上构建 mongo-cxx-driver
;我正在关注 instructions,但出现错误:
C1189 #error: "Cannot find a valid polyfill for make_unique"
这是我所做的:
建筑mongo-c-driver
我使用指定的最低版本 (1.15) 克隆了 mongo-c-driver
:
git clone https://github.com/mongodb/mongo-c-driver --branch r1.15
使用 CMake-Gui(我使用的是 3.18.2),我使用 Visual Studio 16 2019 Generator 生成了 .proj 文件。我使用了默认设置:
编译成功,我可以在C:\Program Files (x86)\mongo-c-driver
.
建筑 mongo-cxx-驱动程序
我使用我想要的版本克隆了项目(与mongo-c-driver
的上述版本兼容):
git clone https://github.com/mongodb/mongo-cxx-driver --branch releases/v3.5
我使用Cmake-Gui配置CMake参数,配置我安装的路径mongo-c
:
注意事项:
- 我没有填写
bson-1.0_DIR
或mongoc-1.0_DIR
因为我不知道他们在找什么。 - 我设置
BSONCXX_POLY_USE_STD=1
因为我正在使用 C++17 并且不想使用std::experimental
或 Boost。
我试图在 Visual Studio 中编译它,并得到了关于没有为 make_unique
找到有效的 polyfill 的上述错误。我哪里错了?
谢谢!
答案好像在installation guide,我漏了一步:
For building with Visual Studio 2017 (without a C++17 polyfill), it is necessary to configure with an additional option, /Zc:__cplusplus to opt into the correct definition of __cplusplus (problem described here):
'C:\Program Files (x86)\CMake\bin\cmake.exe' ..
-G "Visual Studio 15 2017 Win64"
-DCMAKE_CXX_STANDARD=17
-DCMAKE_CXX_FLAGS="/Zc:__cplusplus"
-DCMAKE_PREFIX_PATH=C:\mongo-c-driver
-DCMAKE_INSTALL_PREFIX=C:\mongo-cxx-driver \
我根据需要添加了“/Zc:__cplusplus”标志并且编译正常!