2016-12-20 2 views
1

Vielleicht einfach ich es nicht finden können, aber ich mag einige Codes zu einem Projekt von mir hinzuzufügen (libunwind hier http://www.nongnu.org/libunwind/download.html gefunden)
Diese Bibliothek nicht mit einer CMakeLists.txt Datei kommt und wenn Ich versuche es aufzunehmen. Cmake beklagt sich über diese Tatsache. Im Moment habe ich einfach das Verzeichnis libunwind zu meinem externen Code hinzugefügt und eine Referenz in meine Haupt-CMakeLists.txthinzufügen Bibliothek Cmake Projekt

hinzugefügt. Jeder Eingang wäre großartig.

+2

Erstellen Sie die Bibliothek. Es installieren. Fügen Sie es dann als normale Systembibliothek hinzu. –

+1

Möchten Sie es also so einbinden, dass es bei jedem Kompilieren Ihres Projekts kompiliert wird? – SingerOfTheFall

Antwort

1

Wenn Sie es jedes Mal zusammen mit Ihrem Projekt zu bauen, wäre der einfachste Weg sein:

  • den Quellcode hinzufügen irgendwo in Ihrem Projektbaum
  • ein custom CMake target hinzufügen, die vor der ausgeführt werden soll Zusammenstellung beginnt
  • in diesem benutzerdefinierten Ziel läuft, was benötigt wird, um die Bibliothek zu kompilieren (in Ihrem Fall ist es configure -> machen. -> make install

Wie Das wird selten benötigt und die meiste Zeit sollten Sie die Bibliothek nur einmal erstellen und wie jede andere externe Bibliothek verknüpfen.

3

mit Bibliotheken Umgang gibt es zwei Möglichkeiten für Sie:

  1. Wenn Sie heruntergeladen haben, und waren in der Lage, es zu bauen und installieren können Sie versuchen, es zu finden, später nach innen mögen Sie diese Cmake (im Fall der Boost) und Link zum Ziel:

    find_package (Boost-COMPONENTS date_time System Serialisierung Gewinde program_options Dateisystem unit_test_framework regex chrono erforderlich)

    if (NICHT Boost_FOUND) Nachricht (FATAL_ ERROR "Kann nicht steigern finden!") endif (NICHT Boost_FOUND)

    Meldung (STATUS "Boost gefunden")

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

    target_link_libraries (YOUR_TARGET_NAME $ {Boost_LIBRARIES})

  2. Sie externe Bibliothek Quellen als Stand-alone-Ziel hinzufügen und verwenden smth wie dies für CMake es zu bauen:

    Satz (Quellen async_waiter.h async_waiter_impl.h async_waiter_impl.cpp )

    add_library (async_waiter $ {Quellen})

und später auf den Link Ziel Sie es mit:

target_link_libraries(YOU_TARGET_NAME async_waiter)