2011-02-25 12 views
1

我正在使用在boost 1.46中找到的boost-build的最新版本。鑑於main.cpp取決於a.hb.h,使用升壓建造的能力,自動檢測依賴我的果醬文件只是使用Boost.build自動包含目標文件

exe my_prog : main.cpp ; 

但是,如果有一個執行文件,b.cpp,對象b.o沒有生產也沒有鏈接英寸我想我的構建腳本是最小的,並不需要調整每次我添加一個新的文件。那麼,我怎麼能自動做到這一點?

編輯以反映真實意圖與我所要求的。

回答

1

這有什麼理由不起作用嗎?

exe my_prog : main.cpp b.cpp ; 

做你想要的方式聽起來很痛苦的,不愉快的,尤其是對於一個新來提高建造。另外可能有些時候你只需要標題,而不是cpp。

如果你的代碼是無可挑剔的組織,你只需要在當前目錄下的文件,你可以得到所有的cpp文件很輕鬆地:

exe my_prog : [ glob *.cpp ] ; 

(還有其他的參數glob的,可以讓你以過濾出編輯器可能創建的備份/恢復文件,還有其他版本的glob進入子目錄。)

如果您有多個最終可執行文件需要多個cpp文件,那麼最好使用庫與lib規則並將其用作可執行文件的源之一。

lib blib : b.cpp ; 
exe my_prog : main.cpp blib ; 
+0

+1,我甚至沒有想到要這樣做。我以艱難的方式單元測試我的代碼:多個可執行文件,每個可執行文件測試一個或兩個模塊,因此將程序對象合併到靜態庫中是正確的。我打算讓問題公開,因爲我想了解如何更新依賴關係,但謝謝。 – rcollyer

+0

如果您正在進行測試,您應該查看Boost-Build的[測試規則] [http://www.boost.org/doc/tools/build/doc/html/bbv2/builtins/testing.html]。他們不僅會編譯,還會運行測試應用程序。 – AFoglia

+0

我知道。我實際上只是改變了代碼庫來使用boost-build,因爲我的make腳本很脆弱,並且無法正確傳播選項,所以我所有的測試都只是一個我運行並驗證手動輸出的程序(主要是 - 我用過Mathematica的'Scan'函數爲數學庫生成輸入的所有排列)。需要一段時間才能使用boost-build來設置它們,並且我要在最後期限之前完成。 – rcollyer

相關問題