CMAKE target_link_libraries правильный dylib, но не будет найден на rpath во время выполнения - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь создать приложение QT с помощью cmake, и у меня возникла проблема, включая libqsqlite.dylib. На cmakelist.txt у меня есть следующее:

foreach(plugin ${Qt5Sql_PLUGINS})
   get_target_property(_loc ${plugin} LOCATION)
   target_link_libraries(myapp PUBLIC ${_loc})
   message("Found plugin ${plugin} at location ${_loc}")
endforeach()

Я вызываю конфиг с помощью

usr/local/bin/cmake --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/clang -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ -H/Users/cris/myapp -B/Users/cris/myapp/build -G "Unix Makefiles"

Из сообщения, которое я вижу, он находит и указывает на правый dylib

Found plugin Qt5::QSQLiteDriverPlugin at location /usr/local/Cellar/qt/5.14.1/plugins/sqldrivers/libqsqlite.dylib

Затем я строю с

/usr/local/bin/cmake --build /Users/cris/myapp/build --config Debug --target all -- -j 6 

, и все кажется go хорошо.

Но затем, когда я запускаю, я получаю следующую ошибку:

dyld: Library not loaded: @rpath/libqsqlite.dylib
  Referenced from: /Users/cris/myapp/build/./myapp
  Reason: image not found
Abort trap: 6

И если я позвоню otool -L ./myapp

, я смогу увидеть это там:

@rpath/libqsqlite.dylib (compatibility version 9.0.0, current version 9.6.0)

На данный момент я понятия не имею, что происходит, и я очень растерялся. . Что мне не хватает?

...