Quello che mi piacerebbe fare è configurare il mio file CMakeLists in modo che durante la costruzione del mio progetto il linker usi una copia di una libreria condivisa (.so) che risiede nel mio albero di build per collegare l'eseguibile contro ma non imposta il percorso nel file eseguibile collegato in modo che il sistema debba fornire la libreria quando il caricatore lo richiede.CMake: non impostare rpath per una singola libreria utilizzata nel collegamento
In particolare, desidero collegarmi a libOpenCL.so durante la fase di compilazione in una farm di build che non ha libOpenCL.so installato come libreria di sistema. Per fare ciò, libOpenCL.so si trova nella struttura di costruzione del progetto e fa riferimento usando un percorso assoluto nel file CMakeLists. Questo percorso assoluto è quello di garantire che se il sistema ha libOpenCL.so installato, non viene utilizzato.
Tuttavia, quando si esegue l'eseguibile finale, CMake ha aggiunto il percorso assoluto al percorso che interrompe la versione di sistema di libOpenCL.so che viene prelevata dal caricatore di libreria e utilizzata.
Sembra semplice ma non riesco a capirlo.
Grazie!
È possibile assumere il controllo completo delle impostazioni RPATH invece di consentire a CMake di autogenerarlo. Vedi wiki su [consegnare RPATH in CMake] (https://cmake.org/Wiki/CMake_RPATH_handling). – Tsyvarev