2016-10-18 11 views
2

ich das aktuelle Problem bin vor, während CMake mit:CMake Paketabhängigkeiten Handhabung

I libA, die ich CMake bauen mit und installieren Sie sie (in einem benutzerdefinierten Verzeichnis, ~/install, mit CMAKE_PREFIX_PATH) zusammen mit seinen exportierten Zielen und config (generiert von CMake). Die installierten Dateien suchen mehr oder weniger wie folgt aus:

~/install/lib/libA.so 
~/install/lib/cmake/AConfig.cmake 
~/install/lib/cmake/ATargets.cmake 

I libB haben, die (privat) verbindet gegen libA:

find_package(A CONFIG REQUIRED) 
add_library(B b.c) 
target_link_libraries(B PRIVATE A) 

ich es auch mit seiner exportierten Ziele und config (erzeugt installieren zusammen CMake).

Schließlich Ich habe eine Anwendung, die verwendet libB:

find_package(B CONFIG REQUIRED) 
add_executable(app app.c) 
target_link_libraries(app B) 

Das Problem ist, dass, wenn der Linker ausgeführt wird, wird es gegen libB verknüpfen Sie den vollständigen Pfad (~/install/lib/libB.so) verwenden, aber libA nur verknüpft mit -lA. Da die Bibliotheken nicht in einem "Standard" -Ordner installiert sind, wird dieser nicht gefunden (es sei denn, ich füge den Ordner manuell mit link_directories hinzu).

Mache ich etwas falsch? Was ist die beste Lösung für diesen Fall?

Danke,

Antwort

0

ich noch nicht sagen kann, damit diese ...

Sollten Sie nicht CMAKE_INSTALL_PREFIX verwenden in benutzerdefinierten Verzeichnissen zu installieren? Ist nicht CMAKE_PREFIX_PATH nur eine Liste der Pfadverzeichnisse für die Suche nach Bibliotheken? Könnte das das Problem sein?

Verwandte Themen