cubrid
cubrid copied to clipboard
[POC-DONE] Support Microsoft Vcpkg, Modern Dependency Manager
http://jira.cubrid.org/browse/CBRD-????
Purpose
패키지 매니저 vcpkg를 통해 모든 서드파티들을 캐싱해 빌드합니다.
- vcpkg는 마이크로소프트와 C++ 커뮤니티가 함께 유지 관리하는 오픈 소스 C/C++ 패키지 매니저입니다.
- 2016년 비주얼 스튜디오 프로젝트 마이그레이션 도구로 시작했으나, 현재는 Windows·macOS·Linux를 모두 지원하는 크로스 플랫폼 도구로 발전했습니다.
- C++와 CMake 스크립트로 구현되어 다양한 오픈 소스 라이브러리와 기업용 기능을 제공하며, 개발자 편의와 빌드 시스템 호환성을 중점에 둡니다.
https://github.com/microsoft/vcpkg
서드파티 라이브러리의 재빌드를 막고 큐브리드의 코드만을 빌드해 큐브리드에 집중할 수 있습니다.
주요 변경 사항
- 3rdparty/CMakeLists.txt 파일 삭제
- 기존 3rdparty 빌드 find_package() 로 대체
총 빌드 소요 시간: 28초
개발 2팀 개발 서버 80코어 기준
$ rm ./cubrid_build_dir # 완전히 처음부터 빌드
$ time cmake --preset mybuild
13초
$ time cmake --build --preset mybuild --target install
14초
cmake
cmake --build
- 개발 2팀 장비 기준 풀빌드에 소요되는 시간이 27초 (build_x86_64_debug 폴더를 지운 뒤 최초 빌드)
- 증분 빌드 (파일 수정 후)에 걸리는 시간 최대 14초 (build_x86_64_debug) 폴더가 존재하는데, 모든 파일을 수정할 경우
Implementation
- 3rdparty/CMakeLists.txt 삭제
- vcpkg를 통해 모든 서드파티 라이브러리 설치
- CMake find_package() 사용
Remarks
- CircleCI 와 팀 개발 장비에서 서드파티 라이브러리의 빌드 시간을 완전히 없앨 수 있습니다. (최초 1회 제외)
- 빌드 시간 측정에는 cache 와 clang 19 컴파일러를 적용
- 현재 vcpkg가 circleci에 설치되지 않았으므로 ci는 실패하는 것이 정상