C++ 在Windows上使用SSL和预构建Boost构建Mongo Cpp驱动程序

C++ 在Windows上使用SSL和预构建Boost构建Mongo Cpp驱动程序,c++,mongodb,boost,openssl,driver,C++,Mongodb,Boost,Openssl,Driver,在Windows上使用--SSL选项构建Mongo遗留Cpp驱动程序时遇到问题 问题是,我使用的是Boost库的预构建版本,因此,正如mongo驱动程序构建文档页面上详细介绍的那样,我必须使用--libpath和--cpppath选项来指向Boost库和头,而不是--extrapath选项 由于boost安装在预构建的二进制文件中的布局, 不能使用--extrapath SCons标志通知 boost二进制文件的安装路径。相反,您应该使用 --cpppath标志指向所选boost安装路径的根目录

在Windows上使用--SSL选项构建Mongo遗留Cpp驱动程序时遇到问题

问题是,我使用的是Boost库的预构建版本,因此,正如mongo驱动程序构建文档页面上详细介绍的那样,我必须使用--libpath--cpppath选项来指向Boost库和头,而不是--extrapath选项

由于boost安装在预构建的二进制文件中的布局, 不能使用--extrapath SCons标志通知 boost二进制文件的安装路径。相反,您应该使用 --cpppath标志指向所选boost安装路径的根目录,--libpath指向适当命名的库 boost安装的子目录

但是我还需要--libpath--cpppath来指向OpenSSL库。 我试过:

  • 将路径与“;”组合例如--libpath=“c:\boost path\lib;c:\openssl path\lib”

  • 指定--libpath--cpppath两次,每次一个 路径

  • 设置环境变量LIBPATHCPPPATH
这些都不起作用,这取决于首先发生的事情,我会得到一个关于找不到Boost或找不到SSL的构建警告


如何同时指定两者?

传统驱动程序生成系统支持多种形式的库设置和包含搜索路径。这里要使用的是
LIBPATH
CPPPATH
Scons变量,它们是在调用Scons之后设置的。多个参数在带引号的字符串中用空格分隔。请尝试以下操作:

scons --ssl CPPPATH="c:\boost-path\include c:\openssl-path\include" LIBPATH="c:\boost-path\lib c:\openssl-path\lib"

谢谢这就成功了。但是,如果路径包含空格,如何处理?我已经尝试过所有显而易见的事情,比如在单引号之间放置路径或使用“;”甚至使用['path1','path2'],但没有任何效果。SCON看到的这些变量的字符串被馈送到pythons shlex.split函数。默认情况下,它在windows上使用“其他”模式。有一个build标志将默认值更改为posix,在这里您可能能够实现一些转义,从而达到目的。通常,正是出于这个原因,我尽量不在Windows上的路径上使用空格。