如何列出Qt5的所有CMake组件?

wkyowqbh  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(181)

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

find_package(Qt5 5.12.0 REQUIRED
    COMPONENTS Gui Qml QuickControls2 Svg
)

但是我如何知道我可以在COMPONENTS之后列出的确切名称呢?

uttx8gqw

uttx8gqw1#

组件名称由软件包解释(此处为:Qt5),而不是CMake本身(see)。因此,它们的命名方案是包特定的。在Qt5的情况下,${QT5_DIR}/lib/cmake/Qt5/Qt5Config.cmake显示它们的名称在省略Qt5前缀时与CMake模块名称相同:

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

相关问题