2016-05-02 6 views
1

Я использую Autotools для создания моего проекта, который содержит несколько двоичных файлов (репо с инструментами командной строки).Automake, ссылающийся на несколько PROGRAMS

Как связать некоторые библиотеки со всеми программами и некоторыми другими библиотеками только с конкретными программами?

Пример:
Мои Makefile.am:

bin_PROGRAMS= prog1 prog2 
prog1_SOURCES=prog1.cpp 
prog2_SOURCES=prog2.cpp 

prog1_LDADD= -llib-only-for-prog1 

LDADD=-llib-for-all-projects  # this does not work 
#AM_LDFLAGS=-llib-for-all-projects  # this does not work either 
#LINK=-llib-for-all-projects  # this does not work either 

Я хочу prog1 быть связаны с -llib-only-for-prog1 и -llib-for-all-projects
, а prog2 - только против -llib-for-all-projects.

Как я могу достичь этого с помощью autotools?

+0

Вы также можете найти: ['AM_DEFAULT_SOURCE_EXT = .cpp'] (http://www.gnu.org/software/automake/manual/automake.html#Default-_005fSOURCES) полезно здесь. –

+0

@BrettHale Спасибо. У меня много программ в моем репо, но только некоторые используют больше источников, чем один. Я понимаю, что это будет работать, если я не укажу ' _SOURCES', и если я это сделаю - он будет перезаписан, правильно? – lewiatan

ответ

2

В принципе, если вы добавите LDADD для специальной программы (prog1_LDADD), это будет игнорировать общие параметры LDADD.

следующие работы для меня:

bin_PROGRAMS=prog1 prog2 prog3 
prog1_SOURCES=prog1.c 
prog2_SOURCES=prog2.c 
prog3_SOURCES=prog3.c 

LDADD=-llib-for-all-projects 
prog1_LDADD=-llib-only-for-prog1 $(LDADD) 

Обратите внимание на дополнительные $(LDADD) в prog1_LDADD -LINE.

+0

Хорошо. Я не знал, что 'prog1_LDADD' перезаписывает' LDADD'. Это помогает мне. благодаря – lewiatan