Ubuntu CMake添加到CMAKE_MODULE_PATH的路径

时间:2015-01-31 01:17:09

标签: c++ qt cmake

我的操作系统是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

1 个答案:

答案 0 :(得分:6)

您必须使用变量CMAKE_PREFIX_PATH,即调用

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

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

重点关注:

  • CMAKE_MODULE_PATH适用于&#34; general&#34; inclusion of files和&#34; FindXXX.cmake&#34; find_package(... MODULE)中的文件。
  • 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)是否有效,可能是等价的。