我知道,在CMake中,我可以找到并需要Qt5库,代码如下:
find_package(Qt5 5.12.0 REQUIRED COMPONENTS Gui Qml QuickControls2 Svg )
但是我如何知道我可以在COMPONENTS之后列出的确切名称呢?
COMPONENTS
uttx8gqw1#
组件名称由软件包解释(此处为:Qt5),而不是CMake本身(see)。因此,它们的命名方案是包特定的。在Qt5的情况下,${QT5_DIR}/lib/cmake/Qt5/Qt5Config.cmake显示它们的名称在省略Qt5前缀时与CMake模块名称相同:
${QT5_DIR}/lib/cmake/Qt5/Qt5Config.cmake
Qt5
foreach(module ${Qt5_FIND_COMPONENTS}) find_package(Qt5${module} ... ) ... endforeach()
因此,要列出所有组件的名称,只需列出CMake模块(从相应的ModuleNameConfig.cmake文件名派生而来),并省略前缀Qt5。在Linux下,这样就完成了这项工作,并将输出按列排序:
ModuleNameConfig.cmake
find /path/to/your/qt5/ -name "*Config.cmake" | sed 's/^.*\/Qt5//; s/Config.cmake$//; /^\s*$/d' | sort | pr -t -3
自Qt 5.12起,COMPONENT名称如下所示:
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
1条答案
按热度按时间uttx8gqw1#
组件名称由软件包解释(此处为:Qt5),而不是CMake本身(see)。因此,它们的命名方案是包特定的。在Qt5的情况下,
${QT5_DIR}/lib/cmake/Qt5/Qt5Config.cmake
显示它们的名称在省略Qt5
前缀时与CMake模块名称相同:因此,要列出所有组件的名称,只需列出CMake模块(从相应的
ModuleNameConfig.cmake
文件名派生而来),并省略前缀Qt5
。在Linux下,这样就完成了这项工作,并将输出按列排序:自Qt 5.12起,
COMPONENT
名称如下所示: