2016-10-09 2 views
2

현재 C++ 프로젝트를 GNU autotools toolchain을 사용하도록 이식하고 있으며 라이브러리 의존성 설정에 문제가 있습니다. 무슨 일이 일어나는 것 같아요 -lSDL2 -L/usr/local/lib -lSDL2_image -lSDL2 같은 명령을 ar g ++ 의미 플래그를 제공한다는 것입니다.Autotools가 ar에 라이브러리 플래그를 추가합니다.

다음
noinst_LIBRARIES = libccade.a 
libccade_a_SOURCES = CCade.h CCade_graphics.h CCade_graphics.cpp CCade_util.h CCade_util.cpp 
libccade_a_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS) 
libccade_a_CFLAGS = $(libsdl2_CFLAGS) $(libsdl2_image_CFLAGS) 

make을 끄는 내용은 다음과 같습니다 : 여기

src/Makefile.am에 대한 코드의

ar cru libccade.a CCade_graphics.o CCade_util.o -lSDL2 -L/usr/local/lib -lSDL2_image -lSDL2 
ar: invalid option -- 'L' 
Usage: ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file... 
...(more documentation on ar)... 

그것은 libccade_a_LIBADD에서 인수를 추가하는 것 같다,하지만 난 그 변수를 제거하면, 다음이 같으면 플래그를 g++에 지정하지 마십시오. 나는 무엇을해야합니까?

답변

2

libtool을 사용하지 않는 것 같습니다. 내가 일반적으로 할 것은이를 넣어 내 configure.ac : 다음

AM_PROG_LIBTOOL 

그리고 내 Makefile.am과 같이 될 것이다 :

noinst_HEADERS = CCade.h CCade_graphics.h CCade_util.h 

noinst_LTLIBRARIES = libccade.la 

libccade_la_SOURCES = CCade_graphics.cpp CCade_util.cpp 
libccade_la_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS) 
libccade_la_CPPFLAGS = $(libsdl2_CFLAGS) $(libsdl2_image_CFLAGS) 

두 번째 변수가 noinst_ LT LIBRARIES 있는지 만들기, 그것을 당신을 위해 일해야합니다.

+0

나는 당신의 해결책에 따라 시도해 보았고, 나는 한 걸음 더 가까이 있다고 믿지만, 나는 여전히 같은 오류를 낳는다. –

+0

@MathManiac ** 귀하의 코드를 내 코드로 대체 했습니까? 아니면 귀하의 코드가 그대로 남아 있습니까? – Galik

+1

* EDIT : * 잠깐 .. 두 번째 변수에 "LT"를 추가했다는 것을 깨달았습니다. 지금 그걸 바꾸면 .. –

0

당신은이 선이해야 할? 어떤 연결을하지 않습니다

libccade_a_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS) 

아칸소, 그것은 다른 라이브러리에 대해 상관하지 않는다 무엇을 기대 않았다, 그래서 여기를 지정할 필요가 없습니다.

관련 문제