如何强制我的构建二进制文件在该二进制文件夹中使用。 我正在使用SFML来处理简单的蛇克隆,我将其从Win10上的VS移植到Linux上的Cmake。我已经使用CMAKE进行了编译程序,并且程序运行还不错。但是,我的职业...

问题描述 投票:0回答:0

在检查构建的二进制rpath之后:

objdump -x snake |grep 'R.*PATH'

,我在控制台中收到此消息:

/home/name/Desktop/sfmlsnake/snake/SFML/lib

这是我的sfml .so文件所在的地方,当我从他们的网站下载sfml时得到的文件。

这是我的文件结构:

snake -build --<this is where the built program appears, i run cmake and make from here> -tinyfiledialogs -SFML --lib ---<SFML .so, .a Files, this is where the built programs rpath points to> --include -source --<source.cpp files> -CMakeLists.txt

我使用了互联网上的许多解决方案,这些解决方案声称可以按照我想做我的程序做的事情,但是,所有这些解决方案都导致该程序仍链接到SFML/lib目录中的.SO文件。
当我放置时:

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath='$ORIGIN'")

在我的cmakelists.txt文件中,就在另一个commands。 the命令:

set

.

返回:
objdump -x snake |grep 'R.*PATH'

.

我发现的所有其他解决方案都是这种情况。

PS: 我的项目是在Github上开源的,如果您需要查看其制作方式。不过,请确保查看CMake-Port分支。

https://github.com/xtrel/sfmlsnake/tree/cmake-port

    

如果您想打包游戏以进行重新分配,则需要使用CPACK/CINTALL机制。这种机制使您只能指定rpath:

RUNPATH $ORIGIN:/home/hubert/Desktop/Pendrive/sfmlsnake/snake/SFML/lib

您可以通过设置

set_property(TARGET ${PROJECT_NAME} PROPERTY INSTALL_RPATH '$ORIGIN')
来为构建树做同样的事情,但是默认值通常是您想要的。

您也可以考虑设置

INSTALL_RPATH

,因此它始终使用install_rpath。您的选择!

c++ cmake dynamic sfml rpath
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.