【问题标题】:cmake does not find qt 5.1.1cmake 找不到 qt 5.1.1
【发布时间】:2013-09-14 08:44:46
【问题描述】:

我刚刚为 Windows 32 位(MinGW 4.8,OpenGL)安装了 Qt 5.1.1,并尝试将其添加到我的 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.

【问题讨论】:

  • 您是否尝试过输出“将“Qt5Widgets”的安装前缀添加到CMAKE_PREFIX_PATH 或将“Qt5Widgets_DIR”设置为包含上述文件之一的目录。如果“Qt5Widgets”提供单独的开发包或SDK,请确保已安装。”

标签: c++ qt cmake qt5 qtwidgets


【解决方案1】:

我通过导出 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() 将appends /lib to each of the directories。搞定了。

【讨论】:

  • 对于在 OSX 上构建的其他人,我必须添加 export WITH_QT=1 才能启用 Qt。
【解决方案2】:

您需要将 CMAKE_PREFIX_PATH 设置为 Qt 安装。

http://doc.qt.io/qt-5/cmake-manual.html

【讨论】:

  • "你需要在这行 qt5_use_modules(Blemmer Widgets),并从那里删除 'Qt5::Widgets' 的东西"
  • Steveire,我目前正在度假。请随时通过建议编辑来改进答案,否则我回来时会看看。感谢您的反馈。
  • lpapp,我试过了,但我的编辑被拒绝了。彼得克劳斯随后显然进行了编辑,但没有修复严重错误。所以,lpapp,请尽可能自己解决这个问题。我已经重新提交了我的编辑。
  • 我的编辑再次被拒绝,因为它修复了严重错误。值得注意的是,需要接受带有严重错误的错误答案。我认为 SO 是为了整理好的答案,而不是坏的答案。这个答案被标记为正确,但绝对不是。
  • @steveire,很遗憾审稿人拒绝了它。不幸的是,SO 并不完美,但我感谢您愿意做出建设性的贡献。我更新了帖子,谢谢。让我知道是否还有其他可以改进的地方。
【解决方案3】:

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

【讨论】:

  • 郑重声明:这是误导。 CMAKE_PREFIX_PATH 可以设置为环境变量,无需进一步修改 CMakeLists.txt。查看接受的答案。
  • 感谢@kfunk,您说得对,也可以使用环境变量,接受的答案实际上并没有明确说明CMAKE_PREFIX_PATH此时可以是环境变量,无需咨询文档链接并搜索它。
猜你喜欢
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
相关资源
最近更新 更多