태그: CMake
26편
-
CMake 에러 해결: 컴파일러·find_package·링커·캐시 문제를 단계별로 좁히는 법
CMake 에러를 configure·generate·build·실행 단계로 나눠 원인을 좁히는 방법을 정리합니다. CMake 4.0의 "Compatibility with CMake < 3.5 has been removed", FindBoost 제거, Conan 2 연동, undefined reference, 공유 라이브러리 로딩 실패까지 실제 에러 메시지 기준으로 다룹니다.
-
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를 어떻게 고치면 되는지 수정 코드로 보여줍니다.
-
Conan 기초: conanfile로 의존성 선언, 프로필, Remote, CMake 연동
C++ Conan 패키지 매니저 기초. fmt 같은 라이브러리를 수동으로 받아 빌드하던 불편에서 출발해 설치, conanfile.txt·conanfile.py 작성, 프로필과 Remote 설정, CMake 연동을 예제로 설명합니다.
-
C++ 프로젝트용 GitHub Actions: 3개 OS 매트릭스, vcpkg 캐시, Sanitizer, 릴리스 배포
C++ 프로젝트의 GitHub Actions CI/CD 구성. 워크플로 작성, Linux·macOS·Windows 매트릭스 빌드, vcpkg 바이너리 캐싱과 run-vcpkg, CMakePresets 연동, Sanitizer 실행, 아티팩트와 릴리스·Docker 배포를 다룹니다.
-
C++ 크로스 플랫폼 기초: 플랫폼 감지 매크로, std::filesystem 경로, 동적 로딩 추상화
C++ 크로스 플랫폼 코드 기초: _WIN32/__linux__/__APPLE__ 감지와 기능 감지(__has_include), std::filesystem 경로, LoadLibrary/dlopen 추상화, 플랫폼 추상화 레이어, 타입 크기·엔디안·구조체 정렬 문제를 다룹니다.
-
C++ 크로스 플랫폼 빌드: MinGW·iOS·Android NDK 툴체인 파일과 CPack 패키징
C++ 크로스 플랫폼 빌드: MinGW·iOS·Android NDK용 CMake 툴체인 파일, CPack 패키징(DEB/RPM/NSIS/DMG)과 런타임 검색 경로, 심볼 버전, CI 매트릭스, 빌드·링크·패키징 에러 해결을 다룹니다.
-
vcpkg 기초: 설치, Manifest 모드, Triplet, 버전 고정, 오버레이 커스텀 포트
vcpkg를 서브모듈로 추가하고 vcpkg.json Manifest 모드로 의존성을 선언하는 방법, 정적·동적 링크를 가르는 Triplet, builtin-baseline으로 버전을 고정하는 법, 사내 라이브러리를 오버레이 포트로 넣는 법을 예제로 봅니다.
-
CMake 3.28+ 프리셋과 모듈로 크로스 플랫폼 빌드 구성하기
팀원마다, 플랫폼마다 달라지는 C++ 빌드 설정을 CMake로 통일하는 방법입니다. 최소 CMakeLists.txt와 타겟 기반 설계, PUBLIC·PRIVATE·INTERFACE 전파, CMakePresets.json, find_package와 FetchContent, 3.28부터 지원되는 C++20 모듈 빌드를 다룹니다.
-
CMake로 C++ 프로젝트 빌드하기: 라이브러리, 헤더 경로, 빌드 타입, 설치 규칙
CMake로 C++ 프로젝트를 빌드하는 방법. 기본 CMakeLists.txt, 여러 소스 파일과 라이브러리 구성, 헤더 경로, 외부 라이브러리 연결, 서브디렉토리 구조, 빌드 타입과 플랫폼별 설정, 설치 규칙까지 예제로 정리합니다.
-
CMake find_package로 외부 라이브러리 연결하기: Config vs Module 모드와 커스텀 Find 모듈
CMake find_package로 외부 라이브러리를 통합하는 방법. 기본 사용법, 주요 라이브러리 예제, Config 모드와 Module 모드의 차이, 커스텀 FindModule 작성과 자주 생기는 오류를 정리합니다.
-
CMake 타겟 기반 빌드: target_* 명령과 PUBLIC·PRIVATE·INTERFACE 의존성 전파
CMake를 타겟 중심으로 쓰는 이유와 target_include_directories·target_link_libraries 사용법, PUBLIC·PRIVATE·INTERFACE로 의존성이 전파되는 규칙, 제너레이터 표현식의 공백 함정, 순환 의존성과 install 시 경로 에러까지 멀티 라이브러리 예제로 정리합니다.
-
C++ 의존성 관리 비교: vcpkg vs Conan vs 시스템 패키지, 버전 충돌과 CMake 통합
라이브러리 하나 추가에 하루가 걸리는 의존성 문제를 vcpkg, Conan, 시스템 패키지로 각각 풀어봅니다. vcpkg baseline 고정, Conan 2.x lockfile과 CMake 연동, pkg-config와 Docker 환경 구성, 버전 충돌 해결을 예제로 설명합니다.
-
C++ 빌드 시스템 비교: CMake·Meson·Bazel·Makefile과 패키지 매니저 선택
새 C++ 프로젝트에서 CMake, Meson, Bazel, Makefile 중 무엇을 고를지 빌드 속도·재현성·크로스 컴파일 관점에서 비교합니다. vcpkg와 Conan 중 어떤 패키지 매니저를 조합할지도 사용 사례별로 정리했습니다.
-
CLion으로 C++ 디버깅·리팩토링 빠르게 하기: 필수 단축키 정리
대규모 C++ 프로젝트에서 VS Code의 한계를 느낄 때 CLion으로 넘어가는 방법입니다. CMake 프로필과 Presets 설정, 조건부 브레이크포인트와 Evaluate Expression, Rename·Extract Function 리팩토링과 필수 단축키를 다룹니다.
-
Visual Studio로 C++ 프로파일링·메모리 진단하기: vcpkg 연동까지
C++ Visual Studio 고급 기능: 성능 프로파일러, 메모리 진단, 코드 분석 CppCoreCheck, IntelliCode AI, vcpkg Manifest, CMake 통합. Windows 개발·디버깅.
-
vcpkg 포트 직접 만들기: vcpkg.json·portfile.cmake 작성, 패치와 SHA512, 레지스트리 배포
vcpkg 패키지(포트) 작성법. 포트 파일 구조, vcpkg create로 시작하기, vcpkg.json과 portfile.cmake 작성, SHA512·패치·usage 파일, 공식 레지스트리 PR과 사내 오버레이 배포를 예제로 다룹니다.
-
Conan 2.x 패키지 레시피 작성: conanfile.py, CMakeDeps·CMakeToolchain, test_package, 업로드
C++ Conan 2.x 패키지 레시피 작성법. conanfile.py 구조, CMakeDeps·CMakeToolchain, 헤더 전용 라이브러리 레시피, test_package 검증, conan create·upload와 Artifactory·GitHub Packages 연동을 다룹니다.
-
CMakePresets.json으로 빌드 설정 통일하기: 멀티 플랫폼 프리셋, vcpkg 바이너리 캐시, CI
CMakePresets.json의 configure·build·test·workflow 프리셋 구조와 스키마 버전별 기능, 멀티 플랫폼·MSVC+Ninja 설정, 2025년에 x-gha가 제거된 뒤의 vcpkg 바이너리 캐시 구성, Conan 2 연동, CI 자동화와 자주 나는 에러를 다룹니다.
-
CLion으로 C++ 개발하기: CMake 프로젝트 설정, 툴체인, 디버깅, 리팩토링 단축키
CLion에서 툴체인과 CMake 프로파일을 설정하고 vcpkg·Conan을 연동하는 과정부터, 역디버깅·데이터 브레이크포인트·로그포인트 활용과 Change Signature 같은 리팩토링 단축키까지 VSCode, Visual Studio와 비교하며 설명합니다.
-
CMake 'Could NOT find' 에러
CMake find_package가 Could NOT find 오류를 내는 원인을 라이브러리 미설치, 버전 불일치, Config 파일 부재, 패키지 이름 대소문자, 컴포넌트 누락으로 나눠 설명하고, CMAKE_PREFIX_PATH 설정과 vcpkg·Conan 연동을 다룹니다.
-
C++ CMake 고급 | 멀티 타겟·외부 라이브러리 관리 (대규모 프로젝트 빌드)
라이브러리를 추가할 때마다 빌드가 깨지는 대규모 프로젝트를 타겟 단위 CMake로 정리하는 방법을 다룹니다. PUBLIC·PRIVATE·INTERFACE 전파, Generator Expression, find_package와 FetchContent 선택, undefined reference 해결도 설명합니다.
-
C++ CMake 링크 에러 LNK2019 | 원인과 해결
컴파일은 되는데 링크에서 undefined reference나 LNK2019가 날 때 에러 메시지를 읽는 법부터 원인별 해결까지 다룹니다. 정의 누락, target_link_libraries 누락, 라이브러리를 못 찾는 경우, C 함수 호출 시 extern "C", 링크 순서와 중복 정의를 다룹니다.
-
C++ 패키지 관리 실무: vcpkg와 Conan으로 외부 라이브러리 의존성 지옥 탈출
헤더 하나 쓰려다 경로 설정에 막히는 의존성 문제를 vcpkg와 Conan으로 푸는 실무 방법을 다룹니다. vcpkg 오버레이 포트와 버전 제약, Conan 프로필·옵션·lockfile을 설명하고 CI, 멀티 플랫폼, 사내 저장소, Docker 환경에서 쓰는 패턴을 비교합니다.
-
C++ 프로젝트 CI 구성: GitHub Actions 멀티 OS·컴파일러 매트릭스, vcpkg 캐시, 테스트
로컬에선 되는데 CI에서만 실패하는 C++ 프로젝트를 위한 GitHub Actions 구성. 멀티 OS·컴파일러 매트릭스, CMake 빌드, vcpkg·Conan 캐시, 테스트 실행과 최적화 팁을 다룹니다.
-
CMake 3.31로 시작하는 C++23 Modules와 크로스플랫폼 빌드
g++ 명령을 손으로 치던 빌드를 CMakeLists.txt로 옮기는 과정을 Hello World부터 멀티파일 프로젝트까지 따라가며, Make와 Ninja 생성기 차이, Debug와 Release 빌드, find_package로 외부 라이브러리를 연결하는 방법을 복사해 쓸 수 있는 예제로 설명합니다.