Я пытаюсь понять, как написать свой собственный Makefile для небольшого проекта, поэтому у меня есть несколько вопросов, мой проект состоит из src
каталога, содержащего main.c
, file1.c
, file2.c
, header1.h
, и, наконец, header2.h
эти файлы используют некоторые библиотека из нестандартной библиотеки, которую я создал, и нестандартный заголовочный файл, каталог библиотеки находится в usr/lib/pr__lib
, а каталог заголовков находится в usr/include/lib
поэтому я должен создать два makefile.am
, один из которых будет расположен в каталоге src
, а другой будет в корневой директории проекта makefile.am
каталога src
приведен ниже:Новичок в написании makefile; проверяя мой Makefile
program_NAME := PRDSL
bin_PROGRAMS = PRDSL_AutoProject
program_INCLUDE_DIRS := /usr/bin/PR__bin
program_LIBRARY_DIRS := /usr/lib/PR__lib
CFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))
program_LIBRARIES := \
libprdependency \
libprdynarray_pic \
libprhistogram_pic \
libprlistofarrays \
libprlistofarrays_pic \
libprmalloc \
libvreo_wrapper_library
AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
AM_LDFLAGS += $(foreach library,$(program_LIBRARIES),-l$(library))
PRDSL_AutoProject_SOURCES = \
main.c \
file1.c \
file2.c
depend :
makedepend --$(CFLAGS) --$(PRDSL_AutoProject_SOURCES)
all: $(program_NAME)
второй makefile.am
в корневого каталога, как показано ниже:
SUBDIRS = src
PRDSL_AutoProjectdocdir = ${prefix}/doc/PRDSL_AutoProject
PRDSL_AutoProjectdoc_DATA = \
README\
COPYING\
AUTHORS\
ChangeLog\
INSTALL\
NEWS
INTLTOOL_FILES = intltool-extract.in \
intltool-merge.in \
intltool-update.in
EXTRA_DIST = $(PRDSL_AutoProjectdoc_DATA) \
$(INTLTOOL_FILES)
DISTCLEANFILES = intltool-extract \
intltool-merge \
intltool-update \
po/.intltool-merge-cache
# Remove doc directory on uninstall
uninstall-local:
-rm -r $(PRDSL_AutoProjectdocdir)
, но я получаю следующие ошибки и предупреждения, в то время как я бегу automake
команду:
src/Makefile.am:20: error: 'program_LIBRARIES' is used but 'programdir' is undefined
src/Makefile.am:18: warning: 'CFLAGS' is a user variable, you should not override it;
src/Makefile.am:18: use 'AM_CFLAGS' instead
src/Makefile.am:43: error: AM_LDFLAGS must be set with '=' before using '+='
мог любой из просмотрите его и помогите мне?
Разве вы не получили ответ об этой ошибке по вашему [другому вопросу] (https://stackoverflow.com/questions/27655278/what-is-the-difference-between-am-ldflags-and-ldflags) ? –
@EtanReisner к сожалению Нет, это не решает мои ошибки :( – Sara
@EtanReisner Я попытался переустановить automake и обновить его, но та же ошибка появляется, я использовал эту команду для обновления «sudo apt-get upgrade automake»? – Sara