我正在尝试建立一个开发Ogre3D应用程序的环境。我已将Ogre手动编译到/opt/Ogre3D/ogre-1.11.5/build文件夹中,并在CLion中创建了一个具有以下内容的CMake项目:
cmake_minimum_required(VERSION 3.13)
project(sample)
set(CMAKE_CXX_STANDARD 14)
set(OGRE_DIR /opt/Ogre3D/ogre-1.11.5/build/sdk/cmake)
# specify which version and components you need
find_package(OGRE 1.11 REQUIRED COMPONENTS Bites RTShaderSystem)
# copy resource.cfg next to our binaries where OGRE looks for it
file(COPY ${OGRE_CONFIG_DIR}/resources.cfg DESTINATION ${CMAKE_BINARY_DIR})
add_executable(sample main.cpp)
target_link_libraries(sample ${OGRE_LIBRARIES})当我尝试运行它时,编译是可以的,但是它不能执行它:
/Users/diego/CLionProjects/ogre/sample/cmake-build-debug/sample
dyld: Library not loaded: @executable_path/../Frameworks/OgreBites.framework/Versions/1.11.5/OgreBites
Referenced from: /Users/diego/CLionProjects/ogre/sample/cmake-build-debug/sample
Reason: image not found
Process finished with exit code 6我看过otool -l /opt/Ogre3D/ogre-1.11.5/build/lib/macosx/OgreBites.framework/Versions/1.11.5/OgreBites,有一个名为@executable_path/../Frameworks/OgreBites.framework/Versions/1.11.5/OgreBites的命令LC_ID_DYLIB,它与运行时错误中给出的路径相匹配。但是,我不知道现在该采取哪一步,因为我对macOS上的本机库解析没有多少经验。
更新:
执行命令install_name_tool使链接器找到这个库,但是它在下一个库中失败。我想/希望CMake中有一个选项将它传递给编译器,这样在Ogre编译期间创建的二进制文件就不会使用@execute_path指令了?
发布于 2021-09-09 06:39:42
我也面临着同样的问题,当我使用clion在macos中构建食人魔时。
我发现cmake-build-debug/bin/SampleBrowser.app/Contents/Frameworks.目录中的符号链接无效
我想这些符号链接应该指向cmake/lib/macosx中的这些框架。因此,我修改了执行ln的文件,以创建这些符号链接。
在文件示例/Browser/CMakeLists.txt中,更改
set(OGRE_OSX_BUILD_CONFIGURATION "${CMAKE_OSX_SYSROOT}/$(CONFIGURATION)")转到
set(OGRE_OSX_BUILD_CONFIGURATION "macosx")清理和重建,然后问题就会消失。
https://stackoverflow.com/questions/55388144
复制相似问题