2012-07-22 103 views
2
src 
    |--Manager.cpp 
    |--Specializations 
    | |--Manager.cpp 

建設這個Boost.Build來源試圖創建Boost構建 - 具有相同名稱

/bin/... 
    |--Manager.o 
    |--Manager.o 

但失敗。如何自動解決這個問題?我讀FAQ item,但我不喜歡這個解決方案,因爲當我有一個相同的類名,但名稱空間不同時,我必須手動修復這些問題。是否有可能使Boost.Build自動將前綴目標文件名稱與目錄?

/bin/... 
    |--Manager.o 
    |--Specializations.Manager.o 

還是複製源目錄樹?

/bin/... 
    |--Manager.o 
    |--Specializations 
    | |--Manager.o 
+0

我有一個非常類似的問題:在一個項目的源代碼與可執行目標名稱相同的目錄中,boost b2默認嘗試創建可執行文件的位置與,目錄樹與目標文件中。這是一個真正的痛苦,我沒有一個解決方案(除了重命名目標,這導致其他問題)...例如bin/gcc-4.4.7/release/threading-multi包含source-dir-name,因此可以構建具有相同名稱的目標名稱。 – fig 2014-01-15 14:01:00

+0

@fig在我看來,從boost中獲得的版本與從boost版本官方網頁中獲得的版本完全不同。例如boost版本的「boost」版本現在對我來說根本不起作用,而boost版本的boost版本仍然正常工作。後者也創建一個合適的目錄樹。轉到http://www.boost.org/boost-build2/並從那裏嘗試版本。你可以很容易地將它嵌入到你的項目中(我們有這樣的)。如果它不起作用,請在這裏通知我。 – 2014-01-16 11:28:38

回答

1

這種行爲很久以前已經改變,應該只是工作。 Boost.Build現在模仿源結構,即您應該同時獲得bin/Manager.obin/Specializations/Manager.o

+0

這真的讓我感到驚訝。如你所描述的,它可以在CentOS上運行,但在我的Arch Linux上卻不行。我剛剛嘗試了Debian - 按照你的描述工作。看來Arch有什麼問題... – 2013-07-17 15:33:05