CMake无法找到Qt 5.1.1。

14

我刚刚安装了Qt 5.1.1的Windows 32位版本(MinGW 4.8,OpenGL),并尝试将其添加到我的cmake中。但是CMake似乎无法找到它,我不知道为什么。我错过了什么?我需要设置环境变量或其他吗?

这是我的cmake:

cmake_minimum_required( VERSION 2.8.11 )
PROJECT(Blemmer)
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
# Detect and add SFML
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules" ${CMAKE_MODULE_PATH})

set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
find_package(SFML REQUIRED system window graphics network audio)
# The QUIET option disables messages if the package cannot be found. 
FIND_PACKAGE(Qt5Widgets) 
add_subdirectory(Entity)
add_subdirectory(Engine)
add_subdirectory(Game)
add_executable(Blemmer main.cpp)

include_directories(${SFML_INCLUDE_DIR} ${PROJECT_SOURCE_DIR})
target_link_libraries(Blemmer ${SFML_LIBRARIES} Game Engine Qt5::Widgets)

这是cmake-gui的输出结果:

CMake Warning at CMakeLists.txt:14 (FIND_PACKAGE):
  By not providing "FindQt5Widgets.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "Qt5Widgets", but CMake did not find one.

  Could not find a package configuration file provided by "Qt5Widgets" with
  any of the following names:

    Qt5WidgetsConfig.cmake
    qt5widgets-config.cmake

  Add the installation prefix of "Qt5Widgets" to CMAKE_PREFIX_PATH or set
  "Qt5Widgets_DIR" to a directory containing one of the above files.  If
  "Qt5Widgets" provides a separate development package or SDK, be sure it has
  been installed.

2
你尝试过在输出底部的步骤吗?"将“Qt5Widgets”的安装前缀添加到CMAKE_PREFIX_PATH或将“Qt5Widgets_DIR”设置为包含上述文件之一的目录。如果“Qt5Widgets”提供单独的开发包或SDK,请确保已安装。" - drescherjm
3个回答

25

我通过导出Linux环境变量,在MacOSX 10.10上成功构建了我的GUI界面。

$ brew install qt5
$ ls /usr/local/opt/qt5/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake
$ /usr/local/opt/qt5/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake
$ export CMAKE_PREFIX_PATH=/usr/local/opt/qt5/
$ cd ./build
$ cmake ../CMakeLists.txt
$ make -j8
根据http://www.cmake.org/cmake/help/v3.0/variable/CMAKE_PREFIX_PATH.html,cmake函数FIND_LIBRARY()会将 /lib 添加到每个目录中。这样就完成了。

2
对于在OSX上构建的其他人,我不得不添加export WITH_QT=1以启用Qt。 - sdgfsdh

17

你需要查看这一行代码:qt5_use_modules(Blemmer Widgets),并将其中的 'Qt5::Widgets' 删除。这是不正确的。请参考 Qt 文档中的 CMake 手册。 - steveire
Steveire,我目前正在度假。如果你有任何修改建议,请随意改进答案,否则等我回来后再看。感谢您的反馈。 - László Papp
lpapp,我试了,但我的编辑被拒绝了。然后Peter Krauss似乎做了一次没有修复关键错误的编辑。所以lpapp,请在你能够的时候自己修复这个问题。我已经重新提交了我的编辑。 - steveire
我的修改再次被拒绝了,因为它修复了关键错误。令人惊讶的是,接受一个带有严重错误的错误答案似乎是期望的。我认为 Stack Overflow 的目的是整理好的答案,而不是坏的答案。这个回答被标记为正确的,但绝对不是正确的。 - steveire
1
@steveire,很遗憾评审人员拒绝了它。不幸的是,SO并不完美,但我感谢你愿意做出建设性的贡献。我已经更新了帖子,谢谢。如果有其他可以改进的地方,请告诉我。 - László Papp

6

CMakeLists.txt 文件中使用以下代码进行修复:

set(CMAKE_PREFIX_PATH $ENV{HOME}/Qt5.5.0/5.5/gcc_64)

对我来说,背景大致如下:

# Ubuntu 14.04 LTS, CMake 2.8.12.2
wget http://download.qt.io/official_releases/qt/5.5/5.5.0/qt-opensource-linux-x64-5.5.0.run
chmod u+x qt-opensource-linux-x64-5.5.0.run
./qt-opensource-linux-x64-5.5.0.run
# Follow GUI prompts, installed to default location

3
记录一下:这是误导性的。CMAKE_PREFIX_PATH可以作为环境变量设置,而无需对CMakeLists.txt文件进行进一步修改。请参考被采纳的答案。 - kfunk
2
感谢@kfunk,您是正确的,也可以使用环境变量,但接受的答案实际上并没有明确说明CMAKE_PREFIX_PATH目前可以是一个环境变量,而不需要查阅文档链接并搜索它。 - pzrq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接