C++ 개발자가 선호하는 11가지 라이브러리를 소개한다.
액티브 템플릿 라이브러리 (Active Template Library, ATL)는 COM(구성 요소 개체 모델)
개체를 만들 수 있는 템플릿 기반 C++ 클래스의 세트이다.
Asio C++ Library는 네트워크 프로그래밍을 위한 C++ 라이브러리이다. 오픈 소스이며 크로스 플랫폼
을 지원한다. 네트워크 및 로우레벨 I/O 프로그래밍에 사용되며, 일관적인 비동기
모델을 지원한다. 동시성
, C++ 네트워킹
및 기타 유형의 I/O
를 위한 기본적인 구성 요소를 제공하며 게임
및 앱
부터 상호작용이 많은 웹 사이트
및 실시간 거래 시스템
에 이르기까지 다양한 분야에서 활용된다. asio
를 사용하는 프로젝트로는 웹소켓 PP 라이브러리
와 루아(Lua)
언어를 위한 DDT3 원격 디버거
가 있다.
부스트 (Boost)는 C++
프로그래밍 언어를 위한 선형대수
, 의사 난수 발생
, 멀티스레딩
, 영상 처리
, 정규 표현식
그리고 유닛 테스트
와 같은 작업들과 구조들을 지원하는 라이브러리들의 집합이다. 이식 가능한 무료 C++ 라이브러리를 제공하며, C++ 표준 라이브러리와 함께 사용할 수 있다. 대부분의 현대 운영체제에서 실행되며 많은 리눅스
배포판에서는 부스트 패키지가 기본 내장
이다.
신더 (Cinder)는 고급 비주얼 기능을 구현하기 위해 C++
로 디자인된 오픈 소스 프로그래밍 라이브러리이다. 오디오
, 기하학
, 그래픽
, 비디오
와 같은 분야에 유용하며 플랫폼 네이티브 윈도잉과 이벤트 처리, I/O 추상화를 지원하고 XML
과 JSON
파싱을 위한 API를 내장했다.
아이겐 (Eigen)은 행렬
, 벡터
, 수치 계산 솔버
및 관련 알고리즘을 포함한 선형 대수를 위한 C++ 템플릿 라이브러리
이다. 작은 행렬과 고정 행렬부터 큰 조밀 행렬까지 모든 행렬 크기가 지원된다. 알고리즘은 안정성을 기준으로 선택되며, 모든 표준 수치 유형이 지원된다. 속도를 위해 똑똑하게 임시 변수를 제거하고 지연 연산을 활성화하는 표현식 템플릿을 제공한다.
플로트X (FloatX, Float eXtended)는 저정밀 부동소수점
형식 에뮬레이션을 위한 헤더 라이브러리이다. C++
컴파일러와 기본적으로 호환되지만 Python
, 포트란
과 같은 다른 언어에서도 플로트X
를 호출할 수 있다. 부동소수점 형식은 기본 단정밀도와 배정밀도 형식 이상으로 확장된다. 플로트X
는 오픈 트랜스프리시전 컴퓨팅(Open Transprecision Computing) 이미셔티브에서 만들어졌으며, 아파치 라이선스 2.0에 따라 무료 제공된다.
OpenCV (Open Source Computer Vision Library)는 C++
로 작성되어 아파치2 라이선스로 제공되는 컴퓨터 비전
및 머신 러닝
라이브러리이다. 컴퓨터 비전 어플리케이션을 위한 공통 인프라를 제공하고 상용 제품에서 기계 인식의 사용을 가속화하기 위한 목적으로 만들어졌다. 얼굴 인식
, 사물 탐지
, 사물 분류
, 3D 모델 추출
, 이미지 검색
등 많은 기능을 위한 2,500개 이상의 최적화된 알고리즘을 제공하며 수많은 사용자로 구성된 커뮤니티도 있다.
포코 (Poco : Portable Components) C++ 라이브러리는 boost::asio
처럼 네트워크
라이브러리이다. 그리고 C++ 개발을 간소화하기 위한 목적으로 만들어졌다. 크로스 플랫폼
C++ 라이브러리이기 때문에 데스크탑과 서버, 모바일및 IoT 디바이스에 이르기까지 다양한 시스템에서 실행되는 인터넷
및 네트워크
애플리케이션을 구축할 때 쓰기 유용하다. 머신 러닝이나 데이터 분석을 위해 REST API
를 사용해 마이크로 서비스
를 구축하는 데도 사용된다. 포코
라이브러리의 개념은 자바 클래스 라이브러리, 마이크로소프트 닷넷 프레임워크, 애플 코코아와 비슷하다.
개발자가 포코 라이브러리
를 사용해서 C++로 SQL 데이터베이스
, Redis
, MongoDB
와 통신하는 애플리케이션 서버를 구축하거나 Cloud Backend
와 통신하는 IoT
디바이스용 소프트웨어를 제작할 수 있다. 라이브러리의 기능으로는 Cache 프레임워크
, HTML 양식 처리
, 파일 전송
을 위한 FTP 클라이언트
, HTTP 서버 및 클라이언트
가 있다. 포코 라이브러리
는 부스트 소프트웨어 라이선스에 따라 무료로 제공되며 github에서 다운로드 할 수 있다.
벨록스 (Velox)는 OLAP 시스템을 위한 임베딩 가능한 벡터화된 실행 라이브러리이다. 데이터 처리 시스템과 쿼리 엔진을 최적화하기 위한 용도로 만들어졌다. 2020년 페이스북의 내부 엔지니어링 프로젝트로 시작됐고 이후 오픈 소스화됐다.
Wt Library는 최신 C++의 Web GUI 라이브러리
이다. 한 줄의 javascript
를 작성하지 않고도 위젯을 사용하여 대화형 웹 UI
를 빠르게 개발할 수 있다. Wt
는 모든 요청 처리 및 페이지 렌더링을 처리하므로 기능에 집중할 수 있다. 서버측 솔루션인 Wt
는 요청 처리
와 페이지 렌더링
을 수행하며, 내장 보안 기능
, PDF 렌더링
, 2D 및 3D 페인팅 시스템
, 개체 관계형 매핑 라이브러리
, 차트 라이브러리
, 인증 프레임워크
를 제공한다. 핵심 라이브러리는 오픈 소스이며 리눅스
, 유닉스
또는 윈도우
에 배치 가능한 혼합형 싱글 페이지 프레임워크를 제공한다.
Yocto/GL 라이브러리는 물리 기반 그래픽
알고리즘을 구축하기 위한 작은 C++17 라이브러리 모음이다. 개발 편의성을위해 데이터 지향 스타일로 작성되며 용이한 코드 탐색을 위해 여러 작은 라이브러리로 분할된다. 데이터는 단순한 구조로 저장되며 free
함수를 통해 또는 직접 접근할 수 있다. MIT 라이선스로 제공되며 github에서 받을 수 있다.