我想链接第三方的libLibrary.so
并将其与我的程序一同分发。如果用户解压我的归档文件,他将得到以下文件夹结构:
game
libLibrary.so
game_executable
< p > < code > game_executable 依赖于 < code > ./libLibrary.so 。
< p > 我的项目结构:
game
bin
libLibrary.so
lib
Library.h
src
game_executable.cpp
CMakeLists.txt
我的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)
然而,我得到的是我的game_executable
依赖于... / game / bin / libLibrary.so
,而不是与 game_executable
在同一文件夹中的 ./libLibrary.so
,这使得它完全不可移植!
我该如何使链接路径变为相对路径而不是绝对路径?
set_target_properties
中使用与前面相同的变量名,但省略了前缀CMAKE_
。例如:set_target_properties(game PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE)
和set_target_properties(game PROPERTIES INSTALL_RPATH "./")
。这将执行与您最后一个示例相同的操作。 - John