因此,我有一个自定义构建的框架,位于:
/usr/local/Frameworks/QGLViewer.framework
然后我在CMakeLists.txt中有以下几行可以使用:
list(APPEND CMAKE_FRAMEWORK_PATH "/usr/local/Frameworks")
find_library(QGLViewer_LIBRARY QGLViewer)
if(NOT QGLViewer_LIBRARY)
message(FATAL_ERROR "QGLViewer library not found")
endif()
...
add_executable(OpenGLTest ${MY_SOURCES} ${MY_HEADERS} ${MY_UI_HDRS} ${MY_MOC_SRCS})
target_link_libraries(OpenGLTest
${OpenGL_LIBS}
${QT_LIBRARIES}
${QGLViewer_LIBRARY}
)
当我构建它时,它构建得很好-它在/usr/local/Frameworks/QGLViewer.framework
找到了框架。但是,在运行时链接时,它失败-尝试在/Library/Frameworks/QGLViewer.framework
处找到该框架,该框架不存在。
如果我这样做:
otool -l OpenGLTest
然后我看到此行:
Load command 19
cmd LC_LOAD_DYLIB
cmdsize 88
name /Library/Frameworks/QGLViewer.framework/Versions/A/QGLViewer (offset 24)
time stamp 2 Wed Dec 31 16:00:02 1969
current version 0.0.0
compatibility version 0.0.0
...我认为这意味着不正确的位置已在运行时以某种方式被烘焙到构建中。
可能相关-有时,我将库放在/Library/Frameworks/QGLViewer.framework
处,并在该位置使用该库构建可执行文件。我可以返回到该布局,并且可以使用,但是想将框架移至/usr/local/Frameworks
,因为这对我的“我的框架”更有意义,并且所有Qt框架都在这里构建生活。我以为可能是dyld缓存是罪魁祸首,但是我尝试运行update_dyld_shared_cache -force
,但没有帮助...