所以,我有一个定制的框架,它位于:
/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
……我认为这意味着错误的位置在运行时被某种方式烘烤到构建中。
可能是相关的-在某个时候,我把图书馆设在
/库/frameworks/qglviewer.framework
,并在该位置使用它生成我的可执行文件。我可以回到那个布局,它可以工作,但是我想把框架移到
/usr/local/Frameworks
,因为这对于“我的框架”来说更有意义,而且它是所有(brew构建的)qt框架的所在。我想也许是一些dyld缓存造成的,但我试着运行
update_dyld_shared_cache -force
,但没有帮助…