使用cmake链接到自定义框架-生成时位置正确,运行时位置错误

时间:2018-08-15 20:30:57

标签: c++ macos cmake frameworks

因此,我有一个自定义构建的框架,位于:

/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,但没有帮助...

0 个答案:

没有答案