无法使用CMAKE链接c ++库并进行安装

时间:2017-07-19 09:04:19

标签: c++ makefile cmake ubuntu-16.04

我在使用CMake on linux(ubuntu)链接两个库时遇到问题。我有以下CMake设置。

cmake_minimum_required(VERSION 3.3)
project(lib1)
set(SOURCE_FILES
         source_1.cpp)

# set library output directory
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ../build/)

# Base directory relative to which all includes are
set(BASE_DIR ../)

#include base directory
include_directories ("${BASE_DIR}")

# create a shared library
add_library(lib1 SHARED ${SOURCE_FILES})

# make install target
install(TARGETS lib1 DESTINATION /usr/local/lib)

对于图书馆2,我们有

cmake_minimum_required(VERSION 3.3)
project(lib2)
set(SOURCE_FILES
         source_2.cpp)

set(BASE_DIR ../)
#include base directory
include_directories ("${BASE_DIR}")

# create a shared library
add_library(lib2 SHARED ${SOURCE_FILES})

# include lib1 library
target_link_libraries(lib2 PUBLIC lib1)

install(TARGETS lib2 DESTINATION /usr/local/lib)

使用

运行这些
cmake_minimum_required(VERSION 3.3)
project(all)

add_subdirectory(lib1)
add_subdirectory(lib2)

创建liblib1.so和liblib2.so。 liblib2.so依赖于liblib1.so(ldd liblib2.so在CMAKE_LIBRARY_OUTPUT_DIRECTORY目录中提供了liblib1.so的链接。)

运行后

 make install

我得到了

-- Install configuration: "Release"
-- Up-to-date: /usr/local/lib/liblib1.so
-- Installing: /usr/local/lib/liblib2.so
-- Set runtime path of "/usr/local/lib/liblib2.so" to ""

并且在/ usr / local / lib中liblib2.so不再链接到liblib1.so。

我尝试了很多cmake文件的重做工作(例如:使用:

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

但似乎没有任何帮助。任何人都可以解释如何在make install之后让库链接?

我手动运行了ldconfig,但没有运气。 /usr/local/lib也是ld.conf的一部分,我正在运行ubuntu 16.04

0 个答案:

没有答案