Ссылка на пользовательский фреймворк с помощью cmake — правильное расположение при сборке, неправильное расположение во время выполнения

Итак, у меня есть пользовательский фреймворк, который находится по адресу:

/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и это не помогло …

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]