我有一个项目使用了一些动态库。生成的可执行文件在我的本地计算机上运行良好。但是,如果我与其他人共享它,可执行文件仍然会尝试在我的本地计算机中查找具有绝对路径的动态库,而其他计算机中当然不存在这些动态库。如何通过更改CMakeList来解决此问题?
我当前的CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.24)
project(MyProject)
link_directories("libs/mac_arm64")
add_executable(MyProject main.cpp)
target_link_libraries(MyProject expat bz2 z geos_c)
1条答案
按热度按时间gr8qqesn1#
当CMake构建库和可执行文件时,它(默认)嵌入了absoluteRPATH。这允许在构建机器上运行这些可执行文件时成功地找到所有库。
但是,这些库和可执行文件是在构建树中创建的,不能复制到其他计算机上。
相反,你应该安装这些库和可执行文件。在安装时,CMake会剥离它们的硬编码RPATH,这样就可以分发它们。
添加到您的
CMakeLists.txt
:然后用
这会将您的项目安装到
build
附近的install
目录中。安装后,您可以将install
目录中的内容打包并发送给您的客户/朋友/任何人。CMake甚至提供了cpack工具来轻松打包已安装的项目。有关CMake中RPATH设置的更多信息,请参见其wiki。