我正在创建一个C++共享库,它链接到一些Boost库(本地机器上的Boost版本1.55).
我可以在我的机器上使用我的库,但由于未定义的引用,我无法在具有不同版本的Boost的另一个系统上使用它(假设为1.54).
我在使用CMake,这里是CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8)
project(my_library)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
FILE(GLOB_RECURSE INCLUDE_FILES "include/*.hpp")
FILE(GLOB_RECURSE SOURCE_FILES "src/*.cpp")
add_library(${PROJECT_NAME} SHARED ${INCLUDE_FILES} ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} -pthread -lboost_filesystem -lboost_regex -lboost_system)
Run Code Online (Sandbox Code Playgroud)
我是图书馆创作的新手,我在这个问题上挣扎了好几天.我想知道我是否必须使用Boost创建一个静态库.但我希望我的图书馆尽可能小.
编辑:当我检查我的lib依赖项时,我得到了Boost正则表达式:
libboost_regex.so.1.55.0 => /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.55.0 (0x00007fe228a27000)
是否可以更新此链接以针对特定版本的Boost进行链接?