2016-12-20 11 views
1

Возможно, я просто не могу найти его, но я хочу добавить некоторый код в проект шахты (libunwind найти здесь http://www.nongnu.org/libunwind/download.html)
Эта библиотека не приходит с файлом CMakeLists.txt и когда Я пытаюсь включить его в cmake, который жалуется на этот факт. Прямо сейчас я просто добавил каталог libunwind в свой внешний код и добавил ссылку в мой основной CMakeLists.txtДобавить библиотеку в проект CMake

Любой вход был бы замечательным.

+2

Построить библиотеку. Установите его. Затем добавьте его как обычную системную библиотеку. –

+1

Итак, вы хотите включить его таким образом, что он будет скомпилирован каждый раз, когда вы скомпилируете свой проект? – SingerOfTheFall

ответ

1

Если вы хотите построить его каждый раз вместе с вашим проектом, самым простым способом было бы:

  • Добавить исходный код где-то в дереве проекта
  • Добавить custom CMake target, который должен работать до сборник начинается
  • в этой пользовательской цели, выполнить все, что необходимо для компиляции библиотеки (в вашем случае это ./configure -> сделать -.> сделать установку

Как когда-либо, что редко требуется, и в большинстве случаев вам нужно просто построить библиотеку один раз и связать ее как с любой другой внешней библиотекой.

3

Работа с библиотеками есть 2 варианта для вас:

  1. Если вы загрузили и смог построить и установить его вы можете попытаться найти его в дальнейшем внутри вас CMake, как это (в случае повышающий) и ссылка на вашу цель:

    find_package (Повышения КОМПОНЕНТЫ date_time системы сериализация нити program_options файловая система unit_test_framework регулярное выражение хроа ОБЯЗАТЕЛЬНО)

    если (не Boost_FOUND) сообщение (FATAL_ ERROR "Не удается найти увеличить!") ENDIF (НЕ Boost_FOUND)

    сообщение (STATUS "подталкивание найден")

    include_directories ($ {Boost_INCLUDE_DIRS}) link_directories ($ {Boost_LIBRARY_DIRS})

    target_link_libraries (YOUR_TARGET_NAME $ {Boost_LIBRARIES})

  2. Вы можете добавить внешние источники библиотеки в качестве автономной цели и использовать, как это л для CMake, чтобы построить его:

    комплект (источники async_waiter.h async_waiter_impl.h async_waiter_impl.cpp )

    add_library (async_waiter $ {источники})

, а затем по ссылке вы нацелены на него с:

target_link_libraries(YOU_TARGET_NAME async_waiter)