无法打开Linux GUI上由cmake构建的Qt程序

时间:2018-05-25 07:16:25

标签: linux qt cmake

我的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)

在Linux上的Gnome上编译程序后,我无法通过双击运行它。但如果我通过终端运行它,它的工作原理。 如果我使用qmake来构建程序,那就没有问题了。 我不知道我在CMakeLists中丢失了哪个选项。 CMake和QMake使用相同的源代码,但CMake-Built程序比QMake-Built小。我认为关键是在静态库上。

1 个答案:

答案 0 :(得分:0)

这只是一个猜测 - 可能您需要提供有关您的环境的更多详细信息。但也许它已经帮助你指明正确的方向。

我认为qmake(特别是如果您通过官方Qt安装程序安装了Qt)现在会自动在您构建的可执行文件中设置rpath。这允许程序从任何位置启动,只要Qt库仍然是应用程序构建时的位置。

CMake反过来没有自动设置rpath。这意味着没有进一步的麻烦(通常设置LD_LIBRARY_PATH环境变量),您的程序将找不到Qt库,因此根本无法启动。

这解释了为什么使用GNOME,您无法启动您的应用。有趣的是,从终端启动应用程序似乎有效。这可能有不同的原因。例如,如果在LD_LIBRARY_PATH文件中设置.bashrc,终端将设置该环境变量,因此您从中启动的任何应用程序都可以找到您的Qt安装。

要允许从GNOME启动应用程序,您可以:

  • .bash_profile文件中设置所有必需的变量,然后重新启动GNOME。
  • 指示CMake同时设置rpath