태그: 빌드시스템
9편
-
C 언어 시리즈 #10 — 컴파일 파이프라인·링커 심볼·정적·동적 링크
C 소스가 전처리·컴파일·어셈블·링크를 거쳐 실행 파일이 되는 과정을 따라가며, 정적 .a와 동적 .so 라이브러리를 만들고 -L·-l·rpath 링커 플래그, Makefile 자동 의존성, 미해결·중복 심볼 오류를 진단하는 법을 설명합니다.
-
Ninja vs Make, 그리고 CMake·Meson: 무엇이 실제로 빌드를 빠르게 하는가
Ninja와 Make는 어디서 속도 차이가 나고 어디서는 안 나는지, CMake·Meson은 그 위에서 어떤 역할을 하는지 정리합니다. 명령줄 변경 감지, 헤더 의존성, 병렬 기본값, 잡 풀, jobserver까지 실무 선택 기준을 다룹니다.
-
CMake Error 자주 나는 10가지: find_package 실패·target not found·캐시 오염 해결
find_package가 패키지를 못 찾거나 target not found, 버전 부족, 경로 공백, 오염된 빌드 디렉토리 때문에 CMake가 멈출 때, 에러 메시지별로 원인을 가려내고 CMakeLists.txt를 어떻게 고치면 되는지 수정 코드로 보여줍니다.
-
CMake로 C++ 프로젝트 빌드하기: 라이브러리, 헤더 경로, 빌드 타입, 설치 규칙
CMake로 C++ 프로젝트를 빌드하는 방법. 기본 CMakeLists.txt, 여러 소스 파일과 라이브러리 구성, 헤더 경로, 외부 라이브러리 연결, 서브디렉토리 구조, 빌드 타입과 플랫폼별 설정, 설치 규칙까지 예제로 정리합니다.
-
C++ 빌드 시스템 비교: CMake·Meson·Bazel·Makefile과 패키지 매니저 선택
새 C++ 프로젝트에서 CMake, Meson, Bazel, Makefile 중 무엇을 고를지 빌드 속도·재현성·크로스 컴파일 관점에서 비교합니다. vcpkg와 Conan 중 어떤 패키지 매니저를 조합할지도 사용 사례별로 정리했습니다.
-
vcpkg 포트 직접 만들기: vcpkg.json·portfile.cmake 작성, 패치와 SHA512, 레지스트리 배포
vcpkg 패키지(포트) 작성법. 포트 파일 구조, vcpkg create로 시작하기, vcpkg.json과 portfile.cmake 작성, SHA512·패치·usage 파일, 공식 레지스트리 PR과 사내 오버레이 배포를 예제로 다룹니다.
-
CMakePresets.json으로 빌드 설정 통일하기: 멀티 플랫폼 프리셋, vcpkg 바이너리 캐시, CI
CMakePresets.json의 configure·build·test·workflow 프리셋 구조와 스키마 버전별 기능, 멀티 플랫폼·MSVC+Ninja 설정, 2025년에 x-gha가 제거된 뒤의 vcpkg 바이너리 캐시 구성, Conan 2 연동, CI 자동화와 자주 나는 에러를 다룹니다.
-
C++ CMake 고급 | 멀티 타겟·외부 라이브러리 관리 (대규모 프로젝트 빌드)
라이브러리를 추가할 때마다 빌드가 깨지는 대규모 프로젝트를 타겟 단위 CMake로 정리하는 방법을 다룹니다. PUBLIC·PRIVATE·INTERFACE 전파, Generator Expression, find_package와 FetchContent 선택, undefined reference 해결도 설명합니다.
-
C++ 패키지 매니저 vcpkg와 Conan 비교: manifest·트리플렛·프로파일과 CMake 연동
라이브러리를 손으로 설치하느라 시간을 쓰거나 CI에서만 빌드가 깨지는 문제를 vcpkg와 Conan으로 푸는 방법을 비교합니다. vcpkg의 manifest 모드·트리플렛·버전 고정과 Conan의 conanfile·프로파일 설정을 CMake 연동 예제로 보여주고, 프로젝트에 맞는 선택 기준을 제시합니다.