我使用以下cmake命令将外部c ++库链接到现有的cmake项目:
SET (some_src
.
.(sourcefiles here)
.
.
.
.
)
ADD_LIBRARY(some_proj SHARED ${some_src})
# Adding precompiled NURBS lib
SET(nurbs_libs ${CMAKE_SOURCE_DIR}/src/nurbs/libs)
ADD_LIBRARY( nurbs_C SHARED IMPORTED )
SET_TARGET_PROPERTIES( nurbs_C PROPERTIES
IMPORTED_LOCATION ${nurbs_libs}/surface.so.1.0
LINKER_LANGUAGE "CXX")
TARGET_LINK_LIBRARIES( some_proj nurbs_C )
SET(CMAKE_INSTALL_PATH ${nurbs_libs})
INSTALL(TARGETS some_proj DESTINATION lib)
install(FILES ${nurbs_libs}/surface.so.1.0 DESTINATION lib)
尝试运行使用该库的程序时,我不断收到错误
reels: error while loading shared libraries:
surface.so.1: cannot open shared object file: No such file or directory
我尝试使用LD_LIBRARY_PATH和RPATH但无济于事。我怀疑我对cmake文件做错了。我该如何处理这个问题?
答案 0 :(得分:0)
因为你编译了二进制文件,所以你的CMakeLists.txt可能没问题。使用ldd找出您缺少的库。还要检查你是否在磁盘上有surface.so.1(可能是指向surface.so.1.0的链接)