Не удается открыть программу Qt, созданную cmake в графическом интерфейсе Linux - PullRequest
0 голосов
/ 25 мая 2018

Мои CMakeLists:

cmake_minimum_required(VERSION 3.11.2)
project(test)

set(CMAKE_PREFIX_PATH "/opt/Qt5.10.1/5.10.1/gcc_64")
set(CMAKE_AUTOMOC ON)

find_package(Qt5Widgets REQUIRED)
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)

add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::Core Qt5::Gui)

После того, как я скомпилирую программу на Gnome в Linux, я не могу запустить ее двойным щелчком мыши.Но если я запускаю его через терминал, он работает.Если я использую qmake для сборки программы, таких проблем не возникает.Я не знаю, какой вариант я теряю в CMakeLists.CMake и QMake используют один и тот же исходный код, но программа CMake-Built меньше, чем QMake-Built. Я думаю, ключ находится на статических библиотеках.

1 Ответ

0 голосов
/ 25 мая 2018

Это всего лишь предположение - возможно, вам необходимо предоставить дополнительную информацию о вашей среде.Но, возможно, это уже помогает направить вас в правильном направлении.

Я думаю, что qmake (особенно если вы установили Qt через официальный установщик Qt) в настоящее время автоматически устанавливает rpath в исполняемых вами файлахстроить.Это позволяет запускать программу из любого места, пока библиотеки Qt все еще находятся там, где они были на момент сборки приложения.

CMake, в свою очередь, не устанавливает rpath автоматически.Это означает, что без дальнейших церемоний (обычно устанавливая переменную окружения LD_LIBRARY_PATH ) ваша программа не найдет библиотеки Qt и, следовательно, вообще не запустится.

Это объясняет, почему при использовании GNOMEВы не можете запустить свое приложение.Интересно то, что запуск приложения из терминала, кажется, работает.Это может иметь разные причины.Например, если вы установите LD_LIBRARY_PATH в своем файле .bashrc, для терминала будет установлена ​​эта переменная среды, и, следовательно, любое приложение, из которого вы запускаете его, сможет найти вашу установку Qt.

Чтобы разрешить приложениючтобы также запускаться из GNOME, вы можете:

  • установить вместо этого все необходимые переменные в файле .bash_profile и перезапустить GNOME.
  • Поручить CMake также установить rpath.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...