2017-09-16 52 views
1

我的代碼一些C++軟件和管理與GNU自動整個項目。的#include依賴管理與自動工具

我這是非常囉嗦,所以我做出了劇本「generator.rb」,這在文件「generated.cpp」自動生成它的C++代碼的某些部分。

我有一個從「object_list.txt」

到目前爲止一切正常,構建目標「generated.cpp」即構建「generated.cpp」。

現在我想#包括這個「generated.cpp」文件中的一個又一個「handwritten.cpp」。

由於automake的,據說automaticaly計算上包含文件的依賴關係,我期待它:

  • 建設「handwritten.o」當重建「generated.cpp」,如果它不存在或爲達不到最新的

  • 觸發一個新的「handwritten.o」打造每object_list.txt改變

時間,所以我該怎麼辦呢?

備註:我的源代碼樹是這樣的:

./ 
\_src/ 
| \_handwritten.cpp 
|_design/ 
| \_object_list.txt 
\_tools/ 
    \_generator.rb 

備註:我的構建樹是這樣的:

build/ 
\_gcc_debug/ 
    |_src/ 
    | \_handwritten.o 
    \_design/ 
     \_generated.cpp 

回答

1

由於automake的,據說automaticaly計算上包含文件的依賴

因爲Automake的生成的生成文件生成依賴作爲編譯的副作用,作爲構建的一部分創建的文件需要特殊處理。您必須告訴Automake在嘗試任何常規編譯之前構建這樣的文件。

BUILT_SOURCES = generated.cpp 

...接着寫,你需要創建generated.cpp規則:這是使用BUILT_SOURCES,像做。

+0

謝謝,我做了它的工作。只是精度可能對其他有用的:這個可以做,當「讓」或「做檢查」,這樣做不是在「做handwritten.o」只工作(見上BUILT_SOURCES鏈接)。但現在對我來說已經足夠了。 – user2174468