2011-11-25 2 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.c и hello2.c в то же время?

+1

Это не делают вопрос точно, но GNU строить инструменты вопрос. – dmckee

ответ

0

Использовать make -j num для компиляции num файлов в то же время. Вы можете опустить num и позволить делать как можно больше файлов одновременно. Обычно это не ускоряет работу, если вы собираете больше файлов одновременно, чем в вашей системе. Перед использованием убедитесь, что все зависимости указаны.

0

Даже если вы используете automake, он генерирует только Makefile для вас. В итоге вы используете команду make.

Добавить опцию командной строки -j при запуске make. Он будет инструктировать, чтобы он выполнял столько команд сборки, сколько мог, параллельно. Вы также можете указать максимальное количество одновременных сборок самостоятельно с помощью -j 4. (Обычная хорошее значение nbrProcessors + 1)

0

Если вы хотите построить несколько целей по умолчанию в GNU сделать, вам создать «фальшивый» цель, виртуальную цель, которая зависит от обоих ваших результатов, например:

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

Это будет строить как hello, так и hello2, если вы запустите make или make both.

Reference

Для Automake, вам просто нужно определить обе программы:

bin_PROGRAMS = hello hello2 

hello_SOURCES = hello.c 
hello2_SOURCES = hello2.c 
Смежные вопросы