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,