한국어
오픈소스포럼
 이곳은 다양한 오픈소스 프로젝트를 소개하고 리뷰, 활용 방법을 공유합니다.

CopperSpice는 Qt 프레임워크에서 파생된 C++ 크로스 플랫폼 애플리케이션 개발 라이브러리 집합으로 LGPL V2.1 라이선스 오픈 소스 프로젝트이다. Qt의 기본 설계를 변경하고 순수한 C++ 개발자를 위한 라이브러리 세트로 바꾸는 것을 목표로 시작되었으며 공식적으로 Qt 4.8.2 소스코드에서 포크되어 CopperSpice 1.7.1 기준으로 Qt5.x 초중반까지 기능들은 통합된 것으로 보인다.

지금은 Qt와 완전히 다른 프로젝트로 간주되지만 Qt 의 여러 편리한 기능을 계속 사용할 수 있으면서도 라이센스는 LGPL V2.1 의무사항만 충족하면 된다. (CopperSpice 1.7.1 기준)

GCC, clang 또는 MSVC와 같은 기존 툴체인과 함께 CMake 를 사용하여 빌드할 수 있다. 통합개발환경의 경우 Visual Studio 또는 QtCreator를 개발, 빌드, 테스트 및 배포에 사용할 수 있다.

다음과 같은 주요 라이브러리들이 있다.

CsCore

  • Date/Time, Containers (QVector, QList, QMap, QHash, QStack, etc), File System, JSON, Strings (UTF-8, UTF-16)

CsGui

  • File Dialogs, Menus, Widgets (QCheckbox, QPushbutton, QLineEdit, etc), Printing

CsMultimedia

  • Audio, Video

CsNetwork

  • TCP, HTTP, FTP, IPv6, DNS lookups, SSL, URL support

CsOpenGL

  • Rendering Context, Shader

CsScript

  • 응용프로그램에 JavaScript 엔진 포함.

CsSql

  • SQLite, PostgreSQL, MySQL, etc

CsSvg

  • Renderer, Widget

CsWebKit

  • Web View, Web Page

CsXml

  • DOM, Reader

CsXmlPatterns

  • Schema, Xml Query

다음의 몇가지 독립 실행형 라이브러리들은 BSD 라이선스로 제공된다.

  • CsPaint
  • CsSignal
  • CsString
  • CsLibGuarded

 

 

기본 요구사항

CopperSpice 라이브러리를 사용하려면 C++17 컴파일러와 C++17 표준 라이브러리 및 최신 CMake 가 필요하다. 애플리케이션을 빌드하는 방법에 대한 추가 정보는 CopperSpice 문서 또는 샘플 CMake 프로젝트인 KitchenSink 데모 애플리케이션을 통해 얻을 수 있다.

 

CopperSpice의 특징

  • Meta-Object Compiler는 CopperSpice 에서 메타 데이터를 생성하는 데 더 이상 필요하지 않다.
  • moc는 더 이상 필요하지 않으므로 완전히 제거되었다.
  • 원래 moc에서 제공한 모든 기능은 컴파일 시간 템플릿으로 대체되었다.
  • 템플릿 클래스는 데이터 유형에 대한 제한 없이 QObject에서 상속할 수 있다.
  • 복잡한 데이터 타입도 시그널, 슬롯을 통해 전달 할 수 있다.
  • 모든 컨테이너 클래스를 다시 구현

 

그 밖에 더 많은 특징과 장점들은 아래 링크된 공식 사이트 및 문서를 통해 얻을 수 있다.

https://www.copperspice.com/
https://www.copperspice.com/docs/cs_overview/about-cs.html

저장소는 다음과 같다.

https://github.com/copperspice/copperspice

미리 빌드된 라이브러리를 다운로드 받아 빠르게 시작해 볼 수 있다.

https://download.copperspice.com/copperspice/binary/

데모는 다음 위치에 있다.

https://download.copperspice.com/kitchensink/binary/

 
예제:
CopperSpice 버전으로 포팅한 Network loopback
loopback.png

 

 
files.png

▲ MinGW 로 컴파일 후 패키징 목록. Gui 라이브러리 사이즈가 꽤크다.