2011-11-25 87 views
1

我需要使用GNU構建系統來一次編譯多個文件。到目前爲止,我只看到了如何一次編譯一個文件的例子。這是我最喜歡的參考:GNU一次構建多個文件

http://www.scs.stanford.edu/~reddy/links/gnu/tutorial.pdf

它說:

「Makefile.am」

bin_PROGRAMS = hello 

hello_SOURCES = hello.c 

「configure.ac」

AC_INIT([Hello Program],[1.0], 

[Author Of The Program <[email protected]>], 

[hello]) 

AC_CONFIG_AUX_DIR(config) 

AM_INIT_AUTOMAKE([dist-bzip2]) 

AC_PROG_CC 

AC_PROG_INSTALL 

AC_CONFIG_FILES([Makefile]) 

AC_OUTPUT 

但是,如果我想同時製作hello.chello2.c,該怎麼辦?

+1

這不是簡單的修修補補的問題正是,但GNU編譯工具的問題。 – dmckee

回答

0

使用make -j num編譯num文件在同一時間。您可以省略num,並儘可能多地編譯儘可能多的文件。通常,如果您編譯的文件數多於系統中的CPU /內核數量,那麼它不會讓速度更快。確保在使用前列出所有依賴關係。

0

即使使用automake,它也只會爲您生成Makefile。您最終會使用簡單的make命令。

運行時添加命令行選項-jmake。它會指示它運行儘可能多的構建命令,因爲它可以並行執行。您還可以使用-j 4指定最大併發版本數。 (通常的理想值是nbrProcessors + 1)

0

如果你想用默認的GNU編譯多個目標讓你生成一個「假」的目標,這取決於雙方的結果的虛擬目標,如:

.PHONY: both 
both: hello hello2 
hello: hello.o 
hello2: hello2.o 
hello2.o: hello2.c 

如果您運行makemake both,將生成hellohello2

Reference

對於automake的,你只需要定義兩個方案:

bin_PROGRAMS = hello hello2 

hello_SOURCES = hello.c 
hello2_SOURCES = hello2.c