CopperSpice

CopperSpice consists of a set of libraries used to develop cross-platform software applications. It is an open source project released under the LGPL V2.1 license. CopperSpice was derived from the Qt framework.

Our motivation for developing CopperSpice was to change the fundamental design and turn their framework into a set of libraries for C++ developers. We are accomplishing this by leveraging modern C++ functionality. CopperSpice requires C++14.

CopperSpice consists of the following libraries:

CsCore, CsGui, CsMultimedia, CsNetwork, CsOpenGL, CsPhonon, CsScript, CsSql, CsSvg, CsWebKit, CsXml, and CsXmlPatterns

  • Meta-Object Compiler (moc)
    • The Meta-Object Compiler is no longer required for generating meta data
    • Since moc is no longer required it was removed
    • The functionality provided by moc was replaced with compile time templates
    • CopperSpice automatically generates meta data for processing Signals/Slots and Introspection
    • A template class can now inherit from QObject with no restrictions on types
    • Complex data types can be used without restrictions, for example the following is valid in CopperSpice: QMap<QString, int>

  • Major Enhancements
    • CopperSpice includes many of the Qt 5 classes
    • CopperSpice makes extensive use of modern C++ features like variadic templates, constexpr, SFINAE, type traits, lambdas, atomics, tuple, etc
    • Implement QMultiHash and QMultiMap as separate classes from QHash and QMap
    • Improved CsNetwork, added support for OpenSSL 1.0.x
    • Added new QFlatMap class
      • An ordered map
      • Stores elements in contiguous memory as a sorted vector of pairs
    • Reimplement container classes (QVector, QList, QLinkedList, QMap, QHash, etc) in CsCore
      • Classes leverage the C++ standard library containers, iterators, and algorithms
      • Container classes support both the STL and Qt API
    • Integration of CsSignal
      • Improved thread aware Signal/Slot delivery
      • Increased efficiency while maintaining the full Signal/Slot API
      • Deadlocks in Signal/Slot processing have been eliminated
    • Integration of CsString
      • Improved storage of Unicode strings
      • Adding QString8 (UTF-8) and QString16 (UTF-16)

  • Building
    • The CopperSpice libraries can be built using CMake or GNU Autotools
    • Your C++ application using CopperSpice can be built with CMake, GNU Autotools, or any other build system
    • CopperSpice can be linked directly into any standard C++ application

BSD Libraries

For more information refer to our presentations from CppNow and CppCon. Presentations

Converting to CopperSpice

The process of converting to CopperSpice is simple and quick. Simply convert your Qt application header files one time using our PepperMill utility. The Makefiles from our demo program KitchenSink, DoxyPress,or and the Diamond Editor applications can be used as a guide to create your project files.

Getting Started

The CS Overview documentation includes how to build CopperSpice, setting up a CS project, and how to migrate from Qt to CopperSpice.  CS Overview Documentation

Contacting CopperSpice

  • Join a discussion on our forum  Forum
  • Read or ask questions on our GitHub repository  Code
  • Email the co-founders: info [at] copperspice.com