Marble 2.0: Difference between revisions

From KDE TechBase
(Created page with "Refactoring goals towards a Marble 2.0 version. == Marble Library Split == Split libmarblewidget into several libraries: * libMarbleCore ** Non-interactive classes, e.g. geod...")
 
No edit summary
Line 21: Line 21:
* During compilation, the subdirectories of marble/ are not added to the compiler search path anymore, so #include statements need to use the full path marble/$module/$class.h for files outside their directory.
* During compilation, the subdirectories of marble/ are not added to the compiler search path anymore, so #include statements need to use the full path marble/$module/$class.h for files outside their directory.
* Headers follow the directory structure marble/$module/$path, where $path is either a filename or a directory + filename, but not deeper nested
* Headers follow the directory structure marble/$module/$path, where $path is either a filename or a directory + filename, but not deeper nested
== Qt version dependency bump ==
* Require at least Qt 5.0 to avoid a maintenance nightmare
* Require KDE Frameworks 5 (optional, but kdelibs 4.x not supported)
* Require Qt Quick 2.0 (optional, but Qt Quick 1.1 not supported)

Revision as of 13:01, 19 May 2014

Refactoring goals towards a Marble 2.0 version.

Marble Library Split

Split libmarblewidget into several libraries:

  • libMarbleCore
    • Non-interactive classes, e.g. geodata, file parsing
    • No dependency to QWidgets or Qt Quick
  • libMarbleMap
    • Interactive, UI toolkit independent classes, e.g. layers, graphicsview
    • Dependency to MarbleCore
    • No dependency to QWidgets or Qt Quick
  • libMarbleWidgets
    • QWidget related interactive classes
    • Dependency to QWidget, libMarbleMap, libMarbleCore
  • libMarbleQuick
    • Qt Quick 2.0 related interactive classes
    • Dependency to QtQuick, libMarbleMap, libMarbleCore

Header normalization

  • The header structure in src/lib/ should match the exported headers in include/. No "flattening" as it happens currently where e.g. marble/geodata/* is copied to /marble/.
  • During compilation, the subdirectories of marble/ are not added to the compiler search path anymore, so #include statements need to use the full path marble/$module/$class.h for files outside their directory.
  • Headers follow the directory structure marble/$module/$path, where $path is either a filename or a directory + filename, but not deeper nested

Qt version dependency bump

  • Require at least Qt 5.0 to avoid a maintenance nightmare
  • Require KDE Frameworks 5 (optional, but kdelibs 4.x not supported)
  • Require Qt Quick 2.0 (optional, but Qt Quick 1.1 not supported)