Итак, у меня есть пользовательский фреймворк, который находится по адресу:
/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. Я подумал, что виновником может быть какое-то тайное кеширование, но я попытался запустить update_dyld_shared_cache -force
и это не помогло …
Задача ещё не решена.
Других решений пока нет …