【发布时间】:2020-07-01 12:06:37
【问题描述】:
我知道在 CMake 中我可以使用如下代码找到并需要我需要的 Qt5 库:
find_package(Qt5 5.12.0 REQUIRED
COMPONENTS Gui Qml QuickControls2 Svg
)
但是我怎么知道我可以在COMPONENTS 之后列出的确切名称?
【问题讨论】:
我知道在 CMake 中我可以使用如下代码找到并需要我需要的 Qt5 库:
find_package(Qt5 5.12.0 REQUIRED
COMPONENTS Gui Qml QuickControls2 Svg
)
但是我怎么知道我可以在COMPONENTS 之后列出的确切名称?
【问题讨论】:
组件名称由包解释(此处为: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
【讨论】: