Wie funktioniert die CMake verwenden, pkg-config, um Pakete zu finden?

Ich versuche zu bauen, ein Paket, das verwendet CMake für das Gebäude-system (d.h. libebur128), die sich auf pkg-config zu finden, die benötigten Pakete in das system.

Nach dem Aufbau der erforderlichen Bibliotheken finde ich, dass CMake ist in der Lage zu finden, einer von Ihnen, aber die anderen nicht, obwohl Sie wurden gebaut in der gleichen Weise.

Wie kann ich wissen, was ist falsch? Gibt es eine Möglichkeit, um die Ausgabe der tests, die es tut oder so, wie es ist mit pkg-config zum suchen der Pakete? Weil manuell mit pkg-config funktioniert jedes mal Auffinden aller notwendigen Pakete.

Hier ist einer von den CMake-Skripten zu suchen, etwas, libmpg123 in diesem Fall:

find_package(PkgConfig)
pkg_check_modules(PC_MPG123 QUIET libmpg123)

find_path(MPG123_INCLUDE_DIR mpg123.h
          HINTS ${PC_MPG123_INCLUDEDIR} ${PC_MPG123_INCLUDE_DIRS})
find_library(MPG123_LIBRARY NAMES mpg123 mpg123-0
          HINTS ${PC_MPG123_LIBDIR} ${PC_MPG123_LIBRARY_DIRS})

set(MPG123_LIBRARIES ${MPG123_LIBRARY})
set(MPG123_INCLUDE_DIRS ${MPG123_INCLUDE_DIR})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(MPG123 DEFAULT_MSG MPG123_LIBRARY MPG123_INCLUDE_DIR)
mark_as_advanced(MPG123_INCLUDE_DIR MPG123_LIBRARY)

Hinweis: ich bin cross-kompilieren für Windows im Falle, dass die Dinge, bin ich mit dem MinGW-w64 toolchain und ich habe eingestellt pkg-config Pfade zu schauen, wo es sein sollte.

Haben Sie versucht, entfernen die RUHE von pkg_check_modules? Wenn ich mich nicht Irre, wird das ausblenden der "Prüfung für die Module" - Linie. Auch deshalb sind Sie mit allen manuellen Bibliothek zu suchen Sachen, wenn über pkg-config. Meine typische pkg-config Zeug sieht aus wie pkg_check_modules(GLIB REQUIRED glib-2.0>=2.0.0) - und das ist es.
Dein code sieht gut aus für mich. Kannst du mehr code, einschließlich einen Fall, wo es scheitert? Haben Sie vielleicht ein copy&paste-Fehler.

InformationsquelleAutor Kao Dome | 2013-10-11

Schreibe einen Kommentar