Was ich tun möchte, ist meine CMakeLists-Datei zu konfigurieren, so dass beim Erstellen meines Projekts der Linker eine Kopie einer freigegebenen Bibliothek (.so) verwendet in meinem Build-Baum, um die ausführbare Datei mit zu verknüpfen, setzt aber den rpath in der verknüpften ausführbaren Datei nicht, so dass das System die Bibliothek bereitstellen muss, wenn der Loader dies anfordert.CMake: Legen Sie nicht rpath für eine einzelne Bibliothek in Verbindung verwendet
Insbesondere möchte ich während der Build-Zeit auf einer Build-Farm, die libOpenCL.so nicht als Systembibliothek installiert hat, mit libOpenCL.so verknüpfen. Dazu befindet sich libOpenCL.so in der Projektbaumstruktur und wird mit einem absoluten Pfad in der CMakeLists-Datei referenziert. Dieser absolute Pfad soll sicherstellen, dass, falls das System libOpenCL.so installiert hat, es nicht verwendet wird.
Wenn jedoch die endgültige ausführbare Datei ausgeführt wird, hat CMake den absoluten Pfad zum rpath hinzugefügt, der die Systemversion von libOpenCL.so stoppt, die vom Bibliotheksladeprogramm abgerufen und verwendet wird.
Scheint einfach, aber ich kann es nicht ganz herausfinden.
Danke!
Sie können die RPATH-Einstellungen vollständig steuern, statt CMake automatisch generieren zu lassen. Siehe Wiki über [Übergabe von RPATH in CMake] (https://cmake.org/Wiki/CMake_RPATH_handling). – Tsyvarev