【问题标题】:Ubuntu CMake what path to add to CMAKE_MODULE_PATHUbuntu CMake 添加到 CMAKE_MODULE_PATH 的路径
【发布时间】:2015-01-31 01:17:08
【问题描述】:

我的操作系统是 Ubuntu。我想在我的项目中从 QT4 更改为 QT5。 Ubuntu 现在的原生包是 4.x 版本。

我已经从QT主页下载了Linux安装程序,并在/opt/Qt/5.4/下安装了QT5.4

此路径未被

找到
find_package (Qt5 REQUIRED)

我尝试添加

set(CMAKE_MODULE_PATH "/opt/QT/5.4;${CMAKE_MODULE_PATH}")

给我的CMAKELIST.txt,但这无济于事。

我必须在哪里链接,还是我使用了错误的语法?

提示调用后的一些编辑:

 cmake -DCMAKE_PREFIX_PATH=/opt/QT/5.4/gcc_64/ ../src/

我还删除了 CMAKE_MODULE_PATH 变量。 我仍然得到同样的错误:

 CMake Error at CMakeLists.txt:3 (find_package):
 Found package configuration file:
 /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake
 but it set Qt5_FOUND to FALSE so package "Qt5" is considered to be NOT
 FOUND.  Reason given by package:

 The Qt5 package requires at least one component

看了https://blogs.kde.org/2008/12/12/how-get-cmake-find-what-you-want-it之后不知道为什么会这样 。那里指出,将在默认搜索目录之前搜索路径。我使用的路径似乎是现在:

/opt/QT/5.4/gcc_64/

添加子文件夹gcc_64必须是正确的,因为这个子文件夹有“lib”、“include”等子文件夹。

我记得我也打过电话

sudo apt-get install QT5-default 

前段时间。这没有帮助,我需要 QT 的安装程序。虽然我再次删除了qt5-default,以防止cmake找到错误的包配置文件,但还是出现了同样的错误。

请参阅下面的讨论,移至此处: Cmake and QT5 - Include only takes one argument

【问题讨论】:

  • 应该';'在你的 set() 语句中有吗?
  • 我认为 set(CMAKE_MODULE_PATH "/opt/QT/5.4;${CMAKE_MODULE_PATH}") 是正确的语法,但不确定
  • CMAKE_MODULE_PATH是查找.cmake文件的路径而不是查找已安装的包。
  • 你可以从简单的例子开始:stackoverflow.com/questions/25989448/…,希望对你有帮助。
  • 您需要在find_package (Qt5Core REQUIRED)find_package (Qt5Widgets REQUIRED) 上替换find_package (Qt5 REQUIRED)

标签: c++ qt cmake


【解决方案1】:

你必须使用变量CMAKE_PREFIX_PATH,即invoke

cmake -DCMAKE_PREFIX_PATH=/opt/QT/5.4 <path_to_source>

在构建树的根目录。然后您可以使用find_package(Qt5 ...) 等。另请参阅Qt5 cmake docs

你关注的粗略区分:

  • CMAKE_MODULE_PATH 用于find_package(... MODULE) 中的“一般”inclusion of files 和“FindXXX.cmake”文件。
  • CMAKE_PREFIX_PATHfind_package(... CONFIG) 的上下文中具有special meaning

添加新内容后

这是一个新错误,因此需要一个新问题。如果您在找到 Qt5 config.cmake 文件之前遇到该错误:-)

无论如何,正如错误告诉你的那样

Qt5 包至少需要一个组件

您需要指定Qt5 包的一个组件。正如cmake docs 所说,您需要使用 find_package(Qt5 REQUIRED COMPONENTS Widgets Core ...) 接口,以便 cmake(更好:Qt5 FindQt5.cmake 的逻辑)知道要查找的内容。这将为您提供目标 Qt5::Widgets 等以使用/链接。 我不知道find_package(Qt5Widgets REQUIRED) 的语法是否有效,可能是等价的。

【讨论】:

  • 您的路径不适合我,而 /opt/qt/5.4/gcc_64 可以正常工作。 (库本图 14.10)。
  • 跳起来!我只是使用了@BuddhaWithBigBelly 提供的路径。根据架构/编译器,可能会有不同的子目录。
  • 嘿@BuddaWithBigBelly,很高兴为下一个问题打开一个新问题!如果您认为已回答,请不要忘记将其标记为已接受,或者告诉我您还发现什么未解决:-)
猜你喜欢
  • 2016-07-04
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 2020-01-03
相关资源
最近更新 更多