相关疑难解决方法(0)

如何使用相对路径将共享库与CMake链接

我想链接第三方libLibrary.so并将其与我的程序一起分发。如果用户解压缩我的存档,他将获得以下文件夹结构:

game
  libLibrary.so
  game_executable
Run Code Online (Sandbox Code Playgroud)

game_executable取决于./libLibrary.so

我的项目结构:

game
  bin
    libLibrary.so
  lib
    Library.h
  src
    game_executable.cpp
  CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

我的CMakeLists.txt

cmake_minimum_required(VERSION 3.7)
project(game)

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})

set(SOURCE_FILES src/game_executable.cpp)
include_directories(${CMAKE_SOURCE_DIR}/lib)
add_executable(game ${SOURCE_FILES})
target_link_libraries(${PROJECT_NAME} ${CMAKE_BINARY_DIR}/libLibrary.so)
Run Code Online (Sandbox Code Playgroud)

但是,我得到的是我的game_executable依赖于.../game/bin/libLibrary.so,而不是依赖于./libLibrary.so文件夹中的game_executable,这使得它完全不可移植!

如何使链接路径相对而不是绝对?

c++ cmake

4
推荐指数
3
解决办法
6207
查看次数

标签 统计

c++ ×1

cmake ×1