2016-10-09 30 views
2

我正在移植我的C++項目以使用GNU autotools工具鏈,並且在設置庫依賴項時遇到問題。似乎正在發生的是它給出了用於g ++的命令ar,例如-lSDL2 -L/usr/local/lib -lSDL2_image -lSDL2Autotools將庫標誌添加到ar

下面是src/Makefile.am代碼:

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推出:

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加入ARGS,但如果我刪除該變量,那麼它止跌不要給旗幟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圖書館,它應該爲你工作。

+0

我試着按照你的解決方案,雖然我確信我離得更近,但我仍然得到同樣的錯誤。 –

+0

@MathManiac您是否**用您的代碼替換**您的代碼,或者您的代碼還在那裏? – Galik

+1

*編輯:*等等..我意識到你在第二個變量上加了「LT」。改變現在.. –

0

你是怎麼想到這個線做?:

libccade_a_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS) 

AR沒有做任何鏈接,它不會在乎其他圖書館,所以沒有必要在這裏指定它們。

相關問題