2011-12-22 75 views
1

我試圖用bjam構建boost.lib,但不管我做什麼,我都無法識別我的BOOST_LOG_NO_COMPILER_TLS標誌。我建立這樣的:爲什麼bjam似乎無視我的論點?

bjam address-model=32 --toolset=msvc-10.0 --build-type=complete 
    --with-log variant=debug link=static runtime-link=static 
    define=BOOST_LOG_NO_COMPILER_TLS stage 

要驗證它無視標誌,我有沒有這個標誌編譯和使用超越比較來比較的階段文件夾中生成的每個文件。

所有的lib文件都是相同的。如果bjam確認我的define字段,我會期待差異。

我是新來的助推和bjam,所以我做錯了什麼?

+1

你的語法是正確的,除了toolset - 它應該是'toolset = msvc-10.0' sans'--'。你可以嘗試'cxxflags =「 - DBOOST_LOG_NO_COMPILER_TLS」'而不是使用'define',但是你正確使用'define',所以我懷疑這會有所幫助。你檢查過「#undef BOOST_LOG_NO_COMPILER_TLS」的來源嗎? – ildjarn 2011-12-22 23:32:13

+1

另外,你確定你使用的Boost.Log版本甚至使用'BOOST_LOG_NO_COMPILER_TLS'宏嗎?也許它只適用於舊版本;你應該清楚資料來源,以確保它仍然適用。例如,您的上一個線程指出Boost.Log僅適用於Boost.FileSystem v2,但這肯定不再是這種情況,所以不止這些可能已經發生了變化。 – ildjarn 2011-12-22 23:40:44

回答

1

事實證明,它實際上並沒有重新編譯的東西,即使我指定--build-type=complete

如果您的bin.v2文件夾中有東西,它不會覆蓋它。刪除bin.v2文件夾或指定一些其他未知的神奇參數爲bjam。

+1

事實上,如果您在當前版本中鍵入'bjam --help'(或'b2 --help'),它將解釋「--build-type = complete」的含義 - 這意味着您將獲得所有可能的構建變種。如果你想重建所有的東西,包括最新的文件,使用'-a'選項(在'--help'輸出中也有解釋) – 2011-12-26 07:32:43

+0

感謝Vladimir指針。我仍然困惑,爲什麼如果指定了'define',爲什麼不重建,但後來想到它,它不知道指定的'define'(預處理器)與輸出是最後一個不同建立反對。 – 2011-12-27 14:34:52

+1

這是正確的。在技​​術上可以注意到定義已經改變,特別是SCons通過保持整個構建命令行的校驗和來做到這一點。但是,如果添加一個定義是否是一件好事,重建整個項目是不是完全清楚。 – 2011-12-28 07:05:44

相關問題