Heim > Backend-Entwicklung > C++ > Warum kann CMake meine freigegebene Bibliothek nicht finden, wenn „link_directories' verwendet wird?

Warum kann CMake meine freigegebene Bibliothek nicht finden, wenn „link_directories' verwendet wird?

Susan Sarandon
Freigeben: 2024-12-16 09:32:14
Original
266 Leute haben es durchsucht

Why Does CMake Fail to Find My Shared Library When Using `link_directories`?

CMake stößt auf Schwierigkeiten beim Auffinden einer Bibliothek mithilfe von „link_directories“

Beim Versuch, eine gemeinsam genutzte Bibliothek, libprotobuf.so, mithilfe von „link_directories“ von CMake zu verknüpfen Beim Ausführen eines Befehls stößt ein Benutzer auf Linkerfehler, die auf undefinierte Verweise auf Funktionen in der Bibliothek hinweisen. Obwohl sich die Bibliothek im angegebenen Verzeichnis befindet, kann CMake sie nicht finden.

Die Lösung

Das Problem ergibt sich aus der Reihenfolge, in der die CMake-Befehle innerhalb platziert werden CMakeLists.txt-Datei. Der Befehl „link_directories“ muss vor dem Befehl „add_executable“ und nicht vor dem Befehl „target_link_libraries“ aufgerufen werden.

Erklärung

„add_executable“ erstellt ein ausführbares Ziel, während „link_directories“ angibt, welche Verzeichnisse ausgeführt werden sollen nach gemeinsam genutzten Bibliotheken durchsucht werden. Durch Platzieren des Befehls „link_directories“ nach dem Befehl „add_executable“ kann CMake die Bibliothek nicht finden, wenn versucht wird, die ausführbare Datei zu verknüpfen.

Geänderte CMakeLists.txt

link_directories(/usr/lib/x86_64-linux-gnu)
add_executable(test main.cpp)
target_link_libraries(test protobuf)
Nach dem Login kopieren

Sobald die Reihenfolge der Befehle korrigiert ist, findet CMake erfolgreich die Bibliothek libprotobuf.so und die Linker erzeugt keine undefinierten Referenzfehler mehr.

Das obige ist der detaillierte Inhalt vonWarum kann CMake meine freigegebene Bibliothek nicht finden, wenn „link_directories' verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage