LINUX.ORG.RU

Makefile.am и субдиректория


0

0

Задача:
	есть директория ./src с поддиректорией (./src/dir).
	В ./src/dir есть Makefile, который компилирует .cpp-файлы в объектные (.o).
	Требуется собрать ./src/dir/*.o и ./src/dir/*.o в один исполняемый файл,
	не изменяя .src/dir/Makefile.

	Для генерации .src/Makefile из Makefile.am, используются automake+autoconf.
	Makefile.am сейчас выглядит так:
	
	/////////////////////////////////////////////////////////
	## Process this file with automake to produce Makefile.in

	SUBDIRS = dir

	INCLUDES = \
		-DPACKAGE_DATA_DIR=\""$(datadir)"\" \
		-DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\"
 \
		@PACKAGE_CFLAGS@
		
	bin_PROGRAMS = myprog

	myprog_SOURCES = \
		main.c \
		support.c support.h \
		callbacks.c callbacks.h \
		graphics.c graphics.h \
		rwconfig.c rwconfig.h \
		symbol.c symbol.h
		
		
	myprog_LDADD = @PACKAGE_LIBS@ $(INTLLIBS)
	/////////////////////////////////////////////////////////

	Как его изменить для вышеуказанного действа?
anonymous

myprog_SOURCES = \
main.c \
support.c support.h \
callbacks.c callbacks.h \
graphics.c graphics.h \
rwconfig.c rwconfig.h \
symbol.c symbol.h \
dir/src1.c \
dir/src2.c
...

Могу конечно ошибаться.

UVV ★★★★★
()
Ответ на: комментарий от UVV

Файлы из dir собираются извращенским Makefile'ом. Так не соберется. Надо слинковать.

anonymous
()

myprog_LDADD = dir/*.o @PACKAGE_LIBS@ $(INTLLIBS)

В том смысле, что перечислить их. Ну или с помощью gmake: ADDOBJS=$(wildcard dir/*.o) myprog_LDADD = $(ADDOBJS) @PACKAGE_LIBS@ $(INTLLIBS)

rymis ★★
()
Ответ на: комментарий от rymis

gcc -g -O2 -o myprog main.o support.o callbacks.o graphics.o rwconfig.o symbol.o dir/test.o [библиотеки gtk] main.o(.text+0x7d): In function `main': /home/kirill/Projects/myprog/src/main.c:27: undefined reference to `test'

anonymous
()
Ответ на: комментарий от anonymous

gcc  -g -O2   -o myprog main.o support.o callbacks.o graphics.o rwconfig.o symbol.o dir/test.o [библиотеки gtk]
main.o(.text+0x7d): In function `main':
/home/kirill/Projects/myprog/src/main.c:27: undefined reference to `test'

Не работает.

anonymous
()
Ответ на: комментарий от anonymous

Они не линкуются потому, что написаны на C и C++. (пробовал одинаковые) Как слинковать разноязычные объектные файлы?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.