[英]cmake linking shared libraries on ubuntu
Hi I am having problems with linking two libraries on ubuntu using cmake 2.8.12 嗨,我在使用cmake 2.8.12在ubuntu上链接两个库时遇到问题
Directory structure 目录结构
libraries
\lib1
CMakeLists.txt
source1.cpp
\lib2
CMakeLists.txt
source2.cpp
build
CMakeLists.txt for lib1 lib1的CMakeLists.txt
cmake_minimum_required(VERSION 2.8.4)
project(lib1)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ../../build/)
set(BASE_DIR ../)
set(SOURCE_FILES source1.cpp)
include_directories ("${BASE_DIR}")
add_library(lib1 SHARED ${SOURCE_FILES})
target_include_directories (lib1 PUBLIC ${BASE_DIR})
This builds fine. 这建立良好。
Then for lib2 I have the following CMakeLists.txt 然后对于lib2我有以下CMakeLists.txt
cmake_minimum_required(VERSION 2.8.4)
project(lib2)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ../../build)
set(BASE_DIR ../)
set(SOURCE_FILES
source2.cpp)
include_directories ("${BASE_DIR}")
add_library(lib2 SHARED ${SOURCE_FILES})
# include lib1
list(APPEND CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
find_library(lib1 lib1)
target_link_libraries(lib2 LINK_PUBLIC lib1)
Here I get 在这里我得到
Linking CXX shared library ../build/liblib2.so 链接CXX共享库../build/liblib2.so
/usr/bin/ld: cannot find -llib1 / usr / bin / ld:找不到-llib1
I am not clear how to correctly link these two shared libraries using CMake. 我不清楚如何使用CMake正确链接这两个共享库。 Anyone an idea what is going wrong. 任何人都知道出了什么问题。
Cheers, Mike 干杯,迈克
1) If you use 1)如果您使用
target_include_directories (lib1 PUBLIC ${BASE_DIR})
why do you think you need 你为什么认为你需要
include_directories ("${BASE_DIR}")
? ?
2) Try this: 2)试试这个:
find_library(lib1_location lib1)
message("Lib1 is at: ${lib1_location}")
target_link_libraries(lib2 LINK_PUBLIC ${lib1_location})
and see what happens. 看看会发生什么。
3) See http://www.cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html 3)参见http://www.cmake.org/cmake/help/v3.0/manual/cmake-packages.7.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.