Почему запуск из build-каталога отличается от установленной программы
Во время сборки исполняемый файл часто находит библиотеки через пути сборочной среды. После установки в другой каталог эти пути могут исчезнуть. В Unix-подобных системах путь поиска динамических библиотек записывают в RPATH; CMake предоставляет свойства для настройки поведения при сборке и установке.
set_target_properties(MyApp PROPERTIES
BUILD_RPATH "${CMAKE_BINARY_DIR}/lib"
INSTALL_RPATH "$ORIGIN/../lib"
)
install(TARGETS MyApp RUNTIME DESTINATION bin)
install(TARGETS MyLibrary LIBRARY DESTINATION lib)$ORIGIN в Linux указывает на каталог самого исполняемого файла. Поэтому приложение из bin может искать собственные библиотеки в соседнем lib. На macOS используются другие правила и токены; Windows не использует ELF-RPATH и имеет собственные правила поиска DLL.
Проверяйте именно установленный пакет
Не задавайте абсолютный путь к каталогу разработчика: такой пакет сработает только на вашей машине. Установите проект во временный префикс и запустите его оттуда. Для Qt-приложений также используйте соответствующие инструменты развёртывания Qt, поскольку платформенные плагины — например, платформенный backend — должны быть размещены и обнаружены отдельно.
RPATH — один из элементов упаковки; он не заменяет установку самих библиотек и проверку зависимостей.