Плохая команда компиляции из теста autoconf

Я пытаюсь написать тест autoconf для библиотеки C ++. Я последовал за http://nerdland.net/2009/07/detecting-c-libraries-with-autotools/ . Мой чек выглядит так:

SAVED_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -lMyLib"AC_LINK_IFELSE(
[AC_LANG_PROGRAM([#include <mylibheader.hpp>],
[MyLibNamespace::SomeObject obj()])],
[TEST_LIBS="$TEST_LIBS -lMyLib"] [HAVE_MYLIB=1],
[AC_MSG_ERROR([libMyLib is not installed.])])
LDFLAGS=$SAVED_LDFLAGS

Тест не пройден. Если я проверяю config.log, то проблема, похоже, связана с сгенерированной командой компиляции, данной autoconf для проверки:

g++ -o conftest -g -O2   -lMyLib conftest.cpp

Как видите, параметры -l не в конце, после всех входных и выходных данных. Если я копирую&вставьте код conftest.cpp из config.log, с которым я могу его скомпилировать:

g++ -o conftest -g -O2  conftest.cpp -lMyLib

Как может autoconf быть не так? Как я могу это исправить?

0

Решение

Проблема в том, что вы добавляете -lMyLib в LDFLAGS вместо добавления к LIBS, Другими словами, сделайте это вместо этого:

SAVED_LIBS=$LIBS
LIBS="-lMyLib $LIBS"AC_LINK_IFELSE(
[AC_LANG_PROGRAM([#include <mylibheader.hpp>],
[MyLibNamespace::SomeObject obj()])],
[TEST_LIBS="$TEST_LIBS -lMyLib"] [HAVE_MYLIB=1],
[AC_MSG_ERROR([libMyLib is not installed.])])
LIBS=$SAVED_LIBS

Редактировать: Порядок ссылок библиотек важен, поэтому я обновил LIBS= строка для ссылки MyLib до другие библиотеки, если таковые имеются, с предположением, что MyLib может зависеть от других библиотек.

4

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

Других решений пока нет …

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