cubrid icon indicating copy to clipboard operation
cubrid copied to clipboard

[POC-DONE] Support Microsoft Vcpkg, Modern Dependency Manager

Open vimkim opened this issue 9 months ago • 0 comments

http://jira.cubrid.org/browse/CBRD-????

Purpose

패키지 매니저 vcpkg를 통해 모든 서드파티들을 캐싱해 빌드합니다.

  • vcpkg는 마이크로소프트와 C++ 커뮤니티가 함께 유지 관리하는 오픈 소스 C/C++ 패키지 매니저입니다.
  • 2016년 비주얼 스튜디오 프로젝트 마이그레이션 도구로 시작했으나, 현재는 Windows·macOS·Linux를 모두 지원하는 크로스 플랫폼 도구로 발전했습니다.
  • C++와 CMake 스크립트로 구현되어 다양한 오픈 소스 라이브러리와 기업용 기능을 제공하며, 개발자 편의와 빌드 시스템 호환성을 중점에 둡니다.

https://github.com/microsoft/vcpkg

서드파티 라이브러리의 재빌드를 막고 큐브리드의 코드만을 빌드해 큐브리드에 집중할 수 있습니다.

image

주요 변경 사항

  • 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

image

cmake --build

image

  • 개발 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는 실패하는 것이 정상

vimkim avatar May 24 '25 13:05 vimkim