2013-09-11 24 views
8

我已經下載,解壓縮和編譯了Boost庫(包括單獨編譯的庫)。我已經使用他們的安裝程序幾次,但我似乎無法讓它做到我想要的。現在,當我在編譯後安裝Boost後,它會去將Boost標頭安裝到特定目錄(Windows)

C:\Boost 

這很好。編譯的庫去

C:\Boost\lib 

這也很好。我遇到的問題是安裝了預編譯頭文件。他們得到了把在

C:\Boost\include\boost-1_54\boost 

有沒有辦法使用Boost構建系統和安裝工具設置預編譯頭被安裝到剛剛

C:\Boost\include 

,並沒有加速的版本號是該文件夾層次的一部分?

我不打算在同一時間使用多個版本的Boost,所以我沒有實際使用該版本號的用途。我意識到我可以在安裝完成後手動移動它們,但是如果我忽略了或誤解了Boost構建系統的某些內容,我想先看看。

+1

建立提升時,你會調用哪些命令?你的意思是什麼「預編譯頭文件」? –

+0

我運行了'bootstrap',然後是'。\ b2 -j8 --prefix = C:\ Boost --libdir = C:\ Boost \ lib --includedir = C:\ Boost \ include install'。預編譯頭文件是不需要編譯即可使用的hpp文件,即包含在include目錄中的文件。 – CraigularB

+2

我明白了。如果添加'--layout = system',你會得到什麼? –

回答

0

--layout=system從包含路徑中刪除版本化的子目錄(如@IgorR。指出的那樣)。

「消除路徑中的第二次提升」是一個壞主意。在一個可敬的操作系統(咳嗽...)中,各種庫的包含文件應該共存於一個公共包含目錄中,因此boost子目錄可避免衝突。因此,增強報頭通常被稱爲例如#include <boost/any.hpp>,即包括boost/子目錄。

這是由使用Boost的第三方軟件和Boost本身完成的。如果您從路徑中刪除第二個boost,則最終會出現C:\Boost\include\any.hpp,並且任何使用Boost的軟件都不會編譯,因爲即使Boost也無法找到它自己的包含。

+0

我知道這個問題很古老,但它看起來很寂寞而沒有回答... – DevSolar