【问题标题】:How to list all CMake components of Qt5?如何列出 Qt5 的所有 CMake 组件?
【发布时间】:2020-07-01 12:06:37
【问题描述】:

我知道在 CMake 中我可以使用如下代码找到并需要我需要的 Qt5 库:

find_package(Qt5 5.12.0 REQUIRED
    COMPONENTS Gui Qml QuickControls2 Svg
)

但是我怎么知道我可以在COMPONENTS 之后列出的确切名称?

【问题讨论】:

    标签: qt cmake


    【解决方案1】:

    组件名称由包解释(此处为:Qt5),而不是 CMake 本身(see)。所以他们的命名方案是特定于包的。在 Qt5 的情况下,${QT5_DIR}/lib/cmake/Qt5/Qt5Config.cmake 表明它们的名称与 CMake 模块名称相同减去 Qt5 前缀:

    foreach(module ${Qt5_FIND_COMPONENTS})
        find_package(Qt5${module} ... )
        ...
    endforeach()
    

    所以要列出所有组件名称,只需列出 CMake 模块(源自相应的 ModuleNameConfig.cmake 文件名)并省略 Qt5 前缀。在 Linux 下,这可以完成工作并将输出分类为列:

    find /path/to/your/qt5/ -name "*Config.cmake" |
      sed 's/^.*\/Qt5//; s/Config.cmake$//; /^\s*$/d' |
      sort | pr -t -3
    

    从 Qt 5.12 开始,COMPONENT 名称如下所示:

    3DAnimation             Help                    QuickWidgets
    3DCore                  LinguistTools           RemoteObjects
    3DExtras                Location                RepParser
    3DInput                 Multimedia              Scxml
    3DLogic                 MultimediaWidgets       Sensors
    3DQuick                 Network                 SerialPort
    3DQuickAnimation        Nfc                     Sql
    3DQuickExtras           OpenGL                  Svg
    3DQuickInput            OpenGLExtensions        Test
    3DQuickRender           Positioning             TextToSpeech
    3DQuickScene2D          PositioningQuick        UiPlugin
    3DRender                PrintSupport            UiTools
    AndroidExtras           Qml                     WebChannel
    Bluetooth               Quick                   WebSockets
    Concurrent              QuickCompiler           WebView
    Core                    QuickControls2          Widgets
    Gamepad                 QuickTemplates2         Xml
    Gui                     QuickTest               XmlPatterns
    

    【讨论】:

    • 我可以在 Windows 上使用它,但是我确实有能力在 Windows 上运行 linux shell 实用程序,所以一切都很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    相关资源
    最近更新 更多