2015-05-21 24 views
7

$ LD_LIBRARY_PATH içinde olmayan yerel bir paylaşılan kütüphanem var. Uygulamamı çalıştırmak istiyorum, ancak paylaşılan klasörleri sistem klasörlerinde bulamadığı için "paylaşılan kitaplıkları yüklerken" hata veriyor.CM_LIBRARY_PATH, CMake içinde nasıl değiştirilebilir?

Bunun için olası bir düzeltme, yerel kitaplık klasörünü içeren yeni bir LD_LIBRARY_PATH dışa aktarmaktır.

CMake içindeki bu ortam değişkenini nasıl otomatik olarak dışa aktarabilirim?

cevap

2

, şöyle taşıma CKağıt rpath kullanabilirsiniz Bu:

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

Eğer make install, CKağıt otomatik olarak paylaşılan kütüphanesine yürütülebilir çalışma zamanı yolunu belirleyecektir çalışacaktır

. Paylaşılan kitaplık aynı CKağıt projede inşa edilmiştir

, bu kullanın:

set(CMAKE_INSTALL_RPATH "/usr/local/lib") 
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

Bu durumda kendini ve paylaşılan kütüphane çalışma zamanı yoluna kurulacağı dizini eklemelisiniz.

Daha fazla bilgi için, bir çok yardımcı olur CMake rpath handling

6

yapabilirsiniz -rpath bağlayıcı seçeneğini kullanarak çalışma zamanı paylaşılan kütüphane arama yolunu ayarlayın: Paylaşılan lib yürütülebilir dosyanın aynı CKağıt projesinde inşa değilse

SET(CMAKE_EXE_LINKER_FLAGS 
      "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/usr/local/lib") 
+0

okuyabilirsiniz! – dontloo