Выполнение автоматического поиска для библиотек C ++ - PullRequest
3 голосов
/ 28 ноября 2011

Я пишу свой первый файл configure.ac и мне нужно найти библиотеку C ++.

Я пробовал следующую строку, но при запуске скрипта настройки ничего не находит.

AC_SEARCH_LIBS([xmlpp::Document::get_root_node], [xml++-2.6])

Возможно, что-то не так с этим. Итак, как я могу заставить autoconf искать библиотеки C ++? Я не хочу предоставлять глобальный метод (и не думаю, что он есть в libxml ++).

Ответы [ 3 ]

5 голосов
/ 28 ноября 2011

Возможно, вы захотите попробовать AX_CXX_CHECK_LIB из макроархива Autoconf .вам, вероятно, следует убедиться, что вы используете AC_LANG([C++]) или окружаете вызов AC_LANG_PUSH([C++]) и AC_LANG_POP([C++]).

0 голосов
/ 09 декабря 2016

Эта ссылка о поиске функции подписи в стиле C для библиотеки, чтобы ее можно было проверить с помощью autoconf или написать собственный тест:

https://nerdland.net/2009/07/detecting-c-libraries-with-autotools/

Возможно, стоит попробовать, но я получаю сообщение об ошибке с макросом AC_LANG_PROGRAM. Проблема заключается в том, что -llibname ставится перед файлом foo.cpp. Мой компилятор заботится о порядке файлов -l и cpp. Компоновщик не сможет найти функцию в библиотеке.

0 голосов
/ 28 ноября 2011

Надеюсь, это поможет. Мое предложение будет использовать CMake вместо Autoconf.

Этот файл CMakeLists.txt должен помочь вам начать:

cmake_minimum_required(VERSION 2.8)

# http://www.cmake.org/cmake/help/cmake-2-8-docs.html#module:FindLibXml2
find_package(libxml2 2.6 REQUIRED) # http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:find_package

include_directories(${LIBXML2_INCLUDE_DIR}) # http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:include_directories

add_executable(myApp main.cpp other.cpp) # http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:add_executable
target_link_libraries(myApp ${LIBXML2_LIBRARIES}) # http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:target_link_libraries

Чтобы использовать файл, после настройки вашего проекта, конечно. Поместите его в папку Source как CMakeLists.txt, а затем:

mkdir build
cd build
cmake .. # This is like autoconf and generates the make files
make

Если это звучит интригующе, посмотрите на гигантские видео на YouTube все преимущества: http://www.youtube.com/watch?v=8Ut9o4OdSC0

Хорошо использовать CMake, CTest, CDash и CPack вместе в проекте.

...