【问题标题】:Using Qt5 installed via VCPKG in Visual Studio for C++在 Visual Studio for C++ 中使用通过 VCPKG 安装的 Qt5
【发布时间】:2020-04-05 19:10:15
【问题描述】:

我知道这是一个愚蠢的问题,但我是 Visual Studio/c++/cmake 的初学者。我正在寻找有关如何使用通过 vcpk 安装的 Qt5 的快速介绍:

vcpkg 安装 qt5-base:x64-windows

这一切都安装好了,我得到了以下内容:

qt5-base:x64-windows 包提供了 CMake 目标:

find_package(Qt5Concurrent CONFIG REQUIRED)
target_link_libraries(main PRIVATE Qt5::Concurrent Qt5::ConcurrentPrivate)

等等……

我只是不知道下一步该做什么!在 VS 中使用库之前,我只是做了一个 现在我遇到了很多......我想要一些新手级别的解释。

如果我添加该行(在 .cpp 文件的顶部作为测试):

#include <QtWidgets/QApplication>

它给出:错误(活动)E1696 无法打开源文件“QtWidgets/QApplication”

我是新来的,我认为 vcpkg 不必将所有库等添加到项目选项中就可以解决所有问题?我需要做什么?

【问题讨论】:

  • 那么,到底是什么问题呢?一旦您的可执行文件被链接(如此处指定:target_link_libraries(main PRIVATE Qt5::Concurrent),只需运行它。在 Windows 上,如果使用共享库,可能需要运行 qtdeploy。

标签: c++ visual-studio cmake vcpkg


【解决方案1】:

如果你运行 vcpkg integrate install 并且只是使用 VS,你可以只使用 #include &lt;Qt5/QtWidgets/QApplication&gt;

如果您使用的是 CMake: find_package(Qt5 COMPONENTS Widgets Concurrent CONFIG REQUIRED) 并使用 target_link_libraries 如其他答案所述。但是你可能不得不切换到#include &lt;QApplication&gt;,因为cmake文件会将QtWidgets文件夹添加到包含文件夹中。

对于find_package,要查找 vcpkg 构建版本,您必须将 vcpkg.cmake 工具链文件指定为 CMAKE_TOOLCHAIN_FILE=&lt;vcpkgroot&gt;/scripts/buildsystems/vcpkg.cmake(必须在第一个 CMake 调用中设置,或者在任何 project() 之前在 CMakeLists.txt 的早期设置如果您使用静态三元组之一安装了 Qt5,则可能还有 VCPKG_TARGET_TRIPLET=&lt;sometriplet&gt;(也必须在加载 CMAKE_TOOLCHAIN_FILE 之前提前定义)。

【讨论】:

  • 不需要安装 Qt Visual Studio 工具 (download.qt.io/archive/vsaddin/2.6.0) 吗?我的意思是当不使用 CMake 时。我想这是为了让 Qt 项目在 VS、文件、新项目中可用...
  • 我认为只有在您不想手动设置包含文件夹并且需要 moc/uic 但即使这样也可以手动设置时才真正有必要。我的建议是始终将 cmake 用于 Qt。
【解决方案2】:
  1. vcpkg 是一个跨平台的 C++ 包管理器。与 winget、apt 和 brew 不同,vcpkg 是为开发人员设计的。例如,它默认从源代码构建二进制文件。

因此它可以帮助用户在他们的项目中安装库并能够找到它们。 您仍然需要了解 CMake 规范 find_package() 如何工作恕我直言。

  1. Qt 提供了一个 cmake 配置包,通常你需要使用
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)

然后

target_link_libraries(main PRIVATE ... Qt5::Core Qt5::Gui Qt5::Widgets)

即经验法则:您需要 QtWidget/* 包含?然后 target_link 到 Qt5::Widget 等...

  1. 请注意,CMake 还提供(即内置)一些工具来简化与 Qt 相关的开发...
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

-> 你应该尝试阅读 CMake 文档...

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 2020-07-03
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多