C++ 将Boost标头安装到特定目录(Windows)

C++ 将Boost标头安装到特定目录(Windows),c++,windows,boost,installation,C++,Windows,Boost,Installation,我已经下载、提取和编译了Boost库(包括单独编译的库)。我已经用过他们的安装程序好几次了,但我似乎不能让它完全按照我的要求来做。现在,当我编译后安装Boost时,它会转到 C:\Boost 这很好。编译后的lib将转到 C:\Boost\lib 这也很好。我遇到的问题是预编译头的安装。他们受到攻击 C:\Boost\include\boost-1_54\boost 有没有办法使用Boost构建系统和安装工具将要安装的预编译头设置为 C:\Boost\include 而且Boost版本号

我已经下载、提取和编译了Boost库(包括单独编译的库)。我已经用过他们的安装程序好几次了,但我似乎不能让它完全按照我的要求来做。现在,当我编译后安装Boost时,它会转到

C:\Boost
这很好。编译后的lib将转到

C:\Boost\lib
这也很好。我遇到的问题是预编译头的安装。他们受到攻击

C:\Boost\include\boost-1_54\boost
有没有办法使用Boost构建系统和安装工具将要安装的预编译头设置为

C:\Boost\include
而且Boost版本号不是文件夹层次结构的一部分吗

我不打算同时使用多个版本的Boost,所以我没有必要实际使用这个版本号。我意识到我可以在安装完成后手动移动它们,但我想先看看我是否忽略或误解了Boost的构建系统。

--layout=system
从包含路径中删除版本化的子目录(正如@IgorR.指出的)

“消除道路上的第二个推动力”是个坏主意。在一个体面的操作系统(cough…)中,各种库的include文件应该共存于一个公共include目录中,因此使用
boost
子目录以避免冲突。因此,Boost头通常被称为
#include
,即包括
Boost/
子目录


这是由使用Boost的第三方软件和Boost本身完成的。如果从路径中删除第二个
boost
,最终将得到
C:\boost\include\any.hpp
,任何使用软件的boost都不会编译,因为即使boost也找不到自己的include。

构建boost时,您会调用哪些命令?你说的“预编译头”是什么意思?我先运行了
bootstrap
,然后运行
\b2-j8--prefix=C:\Boost--libdir=C:\Boost\lib--includedir=C:\Boost\include安装
。预编译的头文件是不需要编译的hpp文件,这些文件放在include目录中。如果你添加
--layout=system
,你会得到什么?这样我就更接近了。为了使用
--layout=system
,我还必须指定我正在构建的变量(我决定暂时默认发布),以防止libs上的文件名冲突。问题是include目录看起来仍然像
C:\Boost\include\Boost\[所有hpp文件]
。有没有办法摆脱这条道路上的第二个“助推”?对不起,我刚刚意识到我在提示符上输入了一个选项。我再试一次。编辑2好的,我已经修复了命令行问题,但它仍然在路径中添加第二个Boost。好吧,使用
Boost.Build
您几乎可以做任何事情,但这并不是那么简单。我想您必须使用
user config.jam
file()自定义您的目标。此外,试着发布帖子来提高用户的ML。我知道这个问题很古老,但它看起来很孤独,没有答案…
--layout=system
编译两个调试版本时构建失败。。。仍在寻找答案。请尝试
--layout=taged
。它删除额外的版本子文件夹,但生成库名称,如
libboost\u system-mt-x64.lib
,以避免名称冲突。