Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-116877

Improve configure -list-features output to display feature dependencies

    XMLWordPrintable

Details

    • Task
    • Resolution: Unresolved
    • P3: Somewhat important
    • None
    • None
    • Build System: CMake
    • None

    Description

      The current layout of "list-features" is not very developer friendly. The list is too long and it is not straightforward to figure what feature belong to what "group". The current list:

      ./configure -list-features
      abstractbutton ........... Widgets: Abstract base class of button widgets, providing functionality common to buttons.
      abstractslider ........... Widgets: Common super class for widgets like QScrollBar, QSlider and QDial.
      accessibility ............ Utilities: Provides accessibility support.
      action ................... Kernel: Provides abstract user interface actions.
      animation ................ Utilities: Provides a framework for animations.
      appstore-compliant ....... Disables code that is not allowed in platform app stores
      brotli ................... Networking: Support for downloading and decompressing resources compressed with Brotli through QNetworkAccessManager.
      buttongroup .............. Widgets: Supports organizing groups of button widgets.
      calendarwidget ........... Widgets: Provides a monthly based calendar widget allowing the user to select a date.
      cborstreamreader ......... Utilities: Provides support for reading the CBOR binary format.  Note that this is required for plugin loading. Qt GUI needs QPA plugins for basic operation.
      cborstreamwriter ......... Utilities: Provides support for writing the CBOR binary format.
      checkbox ................. Widgets: Provides a checkbox with a text label.
      clipboard ................ Kernel: Provides cut and paste operations.
      colordialog .............. Dialogs: Provides a dialog widget for specifying colors.
      colornames ............... Painting: Supports color names such as "red", used by QColor and by some HTML documents.
      columnview ............... ItemViews: Provides a model/view implementation of a column view.
      combobox ................. Widgets: Provides drop-down boxes presenting a list of options to the user.
      commandlineparser ........ Utilities: Provides support for command line parsing.
      commandlinkbutton ........ Widgets: Provides a Vista style command link button.
      completer ................ Utilities: Provides completions based on an item model.
      concatenatetablesproxymodel . ItemViews: Supports concatenating source models.
      concurrent ............... Kernel: Provides a high-level multi-threading API.
      contextmenu .............. Widgets: Adds pop-up menus on right mouse click to numerous widgets.
      cpp-winrt ................ basic cpp/winrt language projection support
      cssparser ................ Kernel: Provides a parser for Cascading Style Sheets.
      cups ..................... Painting: Provides support for the Common Unix Printing System.
      cursor ................... Kernel: Provides mouse cursors.
      datawidgetmapper ......... ItemViews: Provides mapping between a section of a data model to widgets.
      datestring ............... Data structures: Provides conversion between dates and strings.
      datetimeedit ............. Widgets: Supports editing dates and times.
      datetimeparser ........... Utilities: Provides support for parsing date-time texts.
      desktopservices .......... Utilities: Provides methods for accessing common desktop services.
      dial ..................... Widgets: Provides a rounded range control, e.g., like a speedometer.
      dialog ................... Dialogs: Base class of dialog windows.
      dialogbuttonbox .......... Dialogs: Presents buttons in a layout that is appropriate for the current widget style.
      dnslookup ................ Networking: Provides API for DNS lookups.
      dockwidget ............... Widgets: Supports docking widgets inside a QMainWindow or floated as a top-level window on the desktop.
      dom ...................... File I/O: Supports the Document Object Model.
      draganddrop .............. Kernel: Supports the drag and drop mechanism.
      dtls ..................... Networking: Provides a DTLS implementation
      easingcurve .............. Utilities: Provides easing curve.
      effects .................. Kernel: Provides special widget effects (e.g. fading and scrolling).
      errormessage ............. Dialogs: Provides an error message display dialog.
      filedialog ............... Dialogs: Provides a dialog widget for selecting files or directories.
      filesystemiterator ....... File I/O: Provides fast file system iteration.
      filesystemmodel .......... File I/O: Provides a data model for the local filesystem.
      filesystemwatcher ........ File I/O: Provides an interface for monitoring files and directories for modifications.
      fontcombobox ............. Widgets: Provides a combobox that lets the user select a font family.
      fontdialog ............... Dialogs: Provides a dialog widget for selecting fonts.
      formlayout ............... Widgets: Manages forms of input widgets and their associated labels.
      freetype ................. Fonts: Supports the FreeType 2 font engine (and its supported font formats).
      fscompleter .............. Utilities: Provides file name completion in QFileDialog.
      future ................... Kernel: Provides QFuture and related classes.
      gestures ................. Utilities: Provides a framework for gestures.
      graphicseffect ........... Widgets: Provides various graphics effects.
      graphicsview ............. Widgets: Provides a canvas/sprite framework.
      groupbox ................. Widgets: Provides widget grouping boxes with frames.
      gssapi ................... Networking: Enable SPNEGO authentication through GSSAPI
      highdpiscaling ........... Kernel: Provides automatic scaling of DPI-unaware applications on high-DPI displays.
      hijricalendar ............ Utilities: Generic basis for Islamic calendars, providing shared locale data
      http ..................... Networking: Provides support for the Hypertext Transfer Protocol in QNetworkAccessManager.
      identityproxymodel ....... ItemViews: Supports proxying a source model unmodified.
      im ....................... Kernel: Provides complex input methods.
      image_heuristic_mask ..... Images: Supports creating a 1-bpp heuristic mask for images.
      image_text ............... Images: Supports image file text strings.
      imageformat_bmp .......... Images: Supports Microsoft's Bitmap image file format.
      imageformat_jpeg ......... Images: Supports the Joint Photographic Experts Group image file format.
      imageformat_png .......... Images: Supports the Portable Network Graphics image file format.
      imageformat_ppm .......... Images: Supports the Portable Pixmap image file format.
      imageformat_xbm .......... Images: Supports the X11 Bitmap image file format.
      imageformat_xpm .......... Images: Supports the X11 Pixmap image file format.
      imageformatplugin ........ Images: Provides a base for writing a image format plugins.
      inputdialog .............. Dialogs: Provides a simple convenience dialog to get a single value from the user.
      islamiccivilcalendar ..... Utilities: Support the Islamic Civil calendar
      itemmodel ................ ItemViews: Provides the item model for item views
      itemmodeltester .......... Provides a utility to test item models.
      itemviews ................ ItemViews: Provides the model/view architecture managing the relationship between data and the way it is presented to the user.
      jalalicalendar ........... Utilities: Support the Jalali (Persian) calendar
      keysequenceedit .......... Widgets: Provides a widget for editing QKeySequences.
      label .................... Widgets: Provides a text or image display.
      lcdnumber ................ Widgets: Provides LCD-like digits.
      library .................. File I/O: Provides a wrapper for dynamically loaded libraries.
      lineedit ................. Widgets: Provides single-line edits.
      listview ................. ItemViews: Provides a list or icon view onto a model.
      listwidget ............... Widgets: Provides item-based list widgets.
      localserver .............. Networking: Provides a local socket based server.
      mainwindow ............... Widgets: Provides main application windows.
      mdiarea .................. Widgets: Provides an area in which MDI windows are displayed.
      menu ..................... Widgets: Provides popup-menus.
      menubar .................. Widgets: Provides pull-down menu items.
      messagebox ............... Dialogs: Provides message boxes displaying informative messages and simple questions.
      mimetype ................. Utilities: Provides MIME type handling.
      movie .................... Images: Supports animated images.
      multiprocess ............. Utilities: Provides support for detecting the desktop environment, launching external processes and opening URLs.
      networkdiskcache ......... Networking: Provides a disk cache for network resources.
      networkinterface ......... Networking: Supports enumerating a host's IP addresses and network interfaces.
      networklistmanager ....... Networking: Use Network List Manager to keep track of network connectivity
      networkproxy ............. Networking: Provides network proxy support.
      ocsp ..................... Networking: Provides OCSP stapling support
      pdf ...................... Painting: Provides a PDF backend for QPainter.
      picture .................. Painting: Supports recording and replaying QPainter commands.
      printdialog .............. Dialogs: Provides a dialog widget for specifying printer configuration.
      printer .................. Painting: Provides a printer backend of QPainter.
      printpreviewdialog ....... Dialogs: Provides a dialog for previewing and configuring page layouts for printer output.
      printpreviewwidget ....... Widgets: Provides a widget for previewing page layouts for printer output.
      process .................. File I/O: Supports external process invocation.
      processenvironment ....... File I/O: Provides a higher-level abstraction of environment variables.
      progressbar .............. Widgets: Supports presentation of operation progress.
      progressdialog ........... Dialogs: Provides feedback on the progress of a slow operation.
      properties ............... Kernel: Supports scripting Qt-based applications.
      proxymodel ............... ItemViews: Supports processing of data passed between another model and a view.
      pushbutton ............... Widgets: Provides a command button.
      qmake .................... Core tools: The qmake tool helps simplify the build process for development projects across different platforms
      radiobutton .............. Widgets: Provides a radio button with a text label.
      raster-64bit ............. Painting: Internal painting support for 64 bit (16 bpc) rasterization.
      raster-fp ................ Painting: Internal painting support for floating point rasterization.
      regularexpression ........ Kernel: Provides an API to Perl-compatible regular expressions.
      relocatable .............. Enable the Qt installation to be relocated.
      resizehandler ............ Widgets: Provides an internal resize handler for dock widgets.
      rubberband ............... Widgets: Supports using rubberbands to indicate selections and boundaries.
      sanitize_fuzzer_no_link .. Adds instrumentation for fuzzing to the binaries but links to the usual main function instead of a fuzzer's.
      scrollarea ............... Widgets: Supports scrolling views onto widgets.
      scrollbar ................ Widgets: Provides scrollbars allowing the user access parts of a document that is larger than the widget used to display it.
      scroller ................. Widgets: Enables kinetic scrolling for any scrolling widget or graphics item.
      sessionmanager ........... Kernel: Provides an interface to the windowing system's session management.
      settings ................. File I/O: Provides persistent application settings.
      sha3-fast ................ Utilities: Optimizes SHA3 for speed instead of size.
      sharedmemory ............. Kernel: Provides access to a shared memory segment.
      shortcut ................. Kernel: Provides keyboard accelerators and shortcuts.
      sizegrip ................. Widgets: Provides corner-grips for resizing top-level windows.
      slider ................... Widgets: Provides sliders controlling a bounded value.
      socks5 ................... Networking: Provides SOCKS5 support in QNetworkProxy.
      sortfilterproxymodel ..... ItemViews: Supports sorting and filtering of data passed between another model and a view.
      spinbox .................. Widgets: Provides spin boxes handling integers and discrete sets of values.
      splashscreen ............. Widgets: Supports splash screens that can be shown during application startup.
      splitter ................. Widgets: Provides user controlled splitter widgets.
      sqlmodel ................. Provides item model classes backed by SQL databases.
      sspi ..................... Networking: Enable NTLM/SPNEGO authentication through SSPI
      stackedwidget ............ Widgets: Provides stacked widgets.
      standarditemmodel ........ ItemViews: Provides a generic model for storing custom data.
      statusbar ................ Widgets: Supports presentation of status information.
      statustip ................ Widgets: Supports status tip functionality and events.
      stringlistmodel .......... ItemViews: Provides a model that supplies strings to views.
      style-stylesheet ......... Styles: Provides a widget style which is configurable via CSS.
      syntaxhighlighter ........ Widgets: Supports custom syntax highlighting.
      systemsemaphore .......... Kernel: Provides a general counting system semaphore.
      systemtrayicon ........... Utilities: Provides an icon for an application in the system tray.
      tabbar ................... Widgets: Provides tab bars, e.g., for use in tabbed dialogs.
      tabletevent .............. Kernel: Supports tablet events.
      tableview ................ ItemViews: Provides a default model/view implementation of a table view.
      tablewidget .............. Widgets: Provides item-based table views.
      tabwidget ................ Widgets: Supports stacking tabbed widgets.
      temporaryfile ............ File I/O: Provides an I/O device that operates on temporary files.
      testlib_selfcover ........ Gauges how thoroughly testlib's selftest exercises testlib's code
      textbrowser .............. Widgets: Supports HTML document browsing.
      textdate ................. Data structures: Supports month and day names in dates.
      textedit ................. Widgets: Supports rich text editing.
      texthtmlparser ........... Kernel: Provides a parser for HTML.
      textmarkdownreader ....... Kernel: Provides a Markdown (CommonMark and GitHub) reader
      textmarkdownwriter ....... Kernel: Provides a Markdown (CommonMark) writer
      textodfwriter ............ Kernel: Provides an ODF writer.
      thread ................... Kernel: Provides QThread and related classes.
      timezone ................. Utilities: Provides support for time-zone handling.
      toolbar .................. Widgets: Provides movable panels containing a set of controls.
      toolbox .................. Widgets: Provides columns of tabbed widget items.
      toolbutton ............... Widgets: Provides quick-access buttons to commands and options.
      tooltip .................. Widgets: Supports presentation of tooltips.
      topleveldomain ........... Networking: Provides support for extracting the top level domain from URLs.  If enabled, a binary dump of the Public Suffix List (http://www.publicsuffix.org, Mozilla License) is included. The data is then also used in QNetworkCookieJar::validateCookie.
      translation .............. Internationalization: Supports translations using QObject::tr().
      transposeproxymodel ...... ItemViews: Provides a proxy to swap rows and columns of a model.
      treeview ................. ItemViews: Provides a default model/view implementation of a tree view.
      treewidget ............... Widgets: Provides views using tree models.
      tuiotouch ................ Provides the TuioTouch input plugin.
      udpsocket ................ Networking: Provides access to UDP sockets.
      undocommand .............. Utilities: Applies (redo or) undo of a single change in a document.
      undogroup ................ Utilities: Provides the ability to cluster QUndoCommands.
      undostack ................ Utilities: Provides the ability to (redo or) undo a list of changes in a document.
      undoview ................. Utilities: Provides a widget which shows the contents of an undo stack.
      valgrind ................. Profiling support with callgrind.
      validator ................ Widgets: Supports validation of input text.
      whatsthis ................ Widget Support: Supports displaying "What's this" help.
      wheelevent ............... Kernel: Supports wheel events.
      widgettextcontrol ........ Widgets: Provides text control functionality to other widgets.
      wizard ................... Dialogs: Provides a framework for multi-page click-through dialogs.
      xmlstream ................ Kernel: Provides a simple streaming API for XML.
      xmlstreamreader .......... Kernel: Provides a well-formed XML parser with a simple streaming API.
      xmlstreamwriter .......... Kernel: Provides a XML writer with a simple streaming API.
      

      The configure provides some switches to disable entire group of features, e.g. "no-widgets". But there is no visible relationship in configure --help how these "group" switches relate to the fine-grained "list-features" list. I would like to see something like this, which clearly describes the feature dependencies.

      -no-widgets
         -feature1
         -feature2 // disabling this, disables the  feature5 and feature6 as well
             -feature5
             -feature6
      -no-network
         -feature3
         -feature4
      

      If feature names would be prefixed with the group they belong too, it might help in sorting the list. But there might need to be some way to describe deps between groups.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qtbuildsystem Qt Build System Team
            paeglis Gatis Paeglis
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes