2010-08-17 5 views
1

동일한 프로젝트에서 수행 된 다른 내부 라이브러리를 사용하는 프로그램을 개발하려고합니다.그것을 사용하여 lib 및 프로그램을 만드는 automake

둘 다 연결하고 싶습니다. lib가 저장되고 ./lib/mylib 아래에 성공적으로 컴파일되고 mylib.a가 생성됩니다. 문제는 INCLUDE 검색에 ./lib/mylib 디렉토리를 포함시키고 프로그램을 라이브러리에 링크해야한다는 것입니다.

자동으로 정의 된 변수가 있습니까? 아니면 아래의 Makefile.am과 같이 직접 변수를 사용해야합니까?

SUBDIRS = lib . 

# set the include path found by configure 
INCLUDES = $(all_includes) -Ilib/mylib 

bin_PROGRAMS = myprogram 

myprogram_SOURCES = main.c 
myprogram_CPPFLAGS = $(libmylib_CFLAGS) $(AM_CFLAGS) $(CFLAGS) 
nfc_network_config_LDADD =$(LIB_MYLIB) 

답변

2

귀하의 Makefile은 다음과 같이 보일 수 있습니다. *_CPPFLAGS 보통 *_CFLAGS와 혼합하고, $(CFLAGS)$(CPPFLAGS) 변수가 항상 사용됩니다 (그들은 사용자 변수) 그래서 당신이 그들을 언급 할 필요가 없습니다되어서는 안된다는

SUBDIRS = lib . 
bin_PROGRAMS = myprogram 
myprogram_SOURCES = main.c 
myprogram_CPPFLAGS = -Ilib/mylib $(AM_CPPFLAGS) 
myprogram_LDADD = lib/mylib/mylib.a 

참고. 또한 INCLUDES은 쓸모없는 변수입니다 (대신 *_CPPFLAGS을 사용해야합니다). -Wall 옵션을 사용하여 automake를 실행하면 경고가 표시됩니다.

+0

AM_PROG_CC_C_O를 사용하는 경우 AM_CPPFLAGS는 호환되지 않습니다. 또는 사용 중지 되었습니까? – jlanza

+0

호환되지 않는 이유는 무엇입니까? 모든 프로젝트에서 subdir-objects와 AM_CPPFLAGS를 사용합니다. – adl

관련 문제