Autotools добавляет библиотечные флаги в ar

В настоящее время я портирую свой проект C ++ на использование набора инструментов GNU autotools, и у меня возникают проблемы с настройкой зависимостей библиотеки. Кажется, что происходит то, что это дает команду ar флаги для g ++, такие как -lSDL2 -L/usr/local/lib -lSDL2_image -lSDL2,

Вот код для 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, но если я удалю эту переменную, то это не даст флаги 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БИБЛИОТЕКИ, это должно работать для вас.

2

Другие решения

Что вы ожидали от этой линии?

libccade_a_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS)

ar не делает никаких ссылок, не заботится о других библиотеках, поэтому нет необходимости указывать их здесь.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector