CMake 열 시트
제품정보
CMake는 플랫폼 의존 구성 파일을 사용하여 기본 빌드 도구 파일 (Makefiles, Visual Studio 프로젝트, Xcode 프로젝트 등)를 생성하는 크로스 플랫폼 빌드 시스템 생성기입니다.
설치하기
패키지 관리자
카지노사이트
기본 개념
제품 정보
카지노사이트
프로젝트 구조
카지노사이트
기본 CMakeLists.txt
Minimal 예제
카지노사이트
간단한 도서관
카지노사이트
변수
내장 변수
카지노사이트
변수 설정
카지노사이트
제품정보
실행하기
카지노사이트
회사 소개
카지노사이트
대상 속성
카지노사이트
패키지 찾기
사이트맵
ο 회원 관리
pkg 구성
카지노사이트
상태 논리
if/else/endif의 경우
카지노사이트
옵션 정보
카지노사이트
기능 및 매크로
제품정보
카지노사이트
로그아웃
카지노사이트
고급 기능
카지노사이트
제품정보
CTest 통합
카지노사이트
Google 테스트 통합
카지노사이트
설치하기
기본 설치
오프화이트
패키지 구성
카지노사이트
발전기 Expressions
기본 발전기 Expressions
오프화이트
고급 발전기 Expressions
카지노사이트
명령 선 사용법
기본 명령
카지노사이트
구성 옵션
카지노사이트
고급 사용
카지노사이트
Cross-Platform 개발
플랫폼 감지
카지노사이트
Toolchain 파일
카지노사이트
최고의 연습
프로젝트 구조
```cmake cmake_minimum_required(VERSION 3.15)
project(MyProject VERSION 1.0.0 DESCRIPTION "My awesome project" LANGUAGES CXX )
Only do these if this is the main project
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) set(CMAKE_CXX_EXTENSIONS OFF) set_property(GLOBAL PROPERTY USE_FOLDERS ON)
include(CTest)
if(BUILD_TESTING)
add_subdirectory(tests)
endif()
endif()
Add subdirectories
add_subdirectory(src) add_subdirectory(external) ```의 경우
현대 CMake 패턴
```cmake
Use target-based approach
target_include_directories(mylib PUBLIC
$
Use imported targets
find_package(Threads REQUIRED) target_link_libraries(myapp PRIVATE Threads::Threads)
Use generator expressions
target_compile_features(myapp PRIVATE cxx_std_17)
Avoid global commands
Don't use: include_directories(), link_directories(), add_definitions()
Use target-specific commands instead
```에 대하여
오류 처리
```cmake
Check CMake version
cmake_minimum_required(VERSION 3.15)
Validate variables
if(NOT DEFINED PROJECT_VERSION) message(FATAL_ERROR "PROJECT_VERSION must be defined") endif()
Check for required files
if(NOT EXISTS "$\\{CMAKE_CURRENT_SOURCE_DIR\\}/src/main.cpp") message(FATAL_ERROR "main.cpp not found") endif()
Validate options
| if(BUILD_TYPE AND NOT BUILD_TYPE MATCHES "^(Debug | Release | RelWithDebInfo | MinSizeRel)$") | message(FATAL_ERROR "Invalid BUILD_TYPE: $\\{BUILD_TYPE\\}") endif() ```의 경우
관련 링크
Debug 출력
```cmake
Print variables
message(STATUS "CMAKE_BUILD_TYPE: $\\{CMAKE_BUILD_TYPE\\}") message(STATUS "CMAKE_CXX_COMPILER: $\\{CMAKE_CXX_COMPILER\\}")
Print all variables
get_cmake_property(_variableNames VARIABLES) foreach(_variableName $\\{_variableNames\\}) message(STATUS "$\\{_variableName\\}=$\\{$\\{_variableName\\}\\}") endforeach()
Print target properties
get_target_property(MYAPP_SOURCES myapp SOURCES) message(STATUS "myapp sources: $\\{MYAPP_SOURCES\\}") ```에 대하여
문제 해결
```bash
Verbose makefile
cmake -S . -B build -DCMAKE_VERBOSE_MAKEFILE=ON
Debug find_package
cmake -S . -B build --debug-find
Trace execution
cmake -S . -B build --trace
Debug output
cmake -S . -B build --debug-output ```의 경우
지원하다
- ** 공식 문서**: cmake.org/documentation
- ** 케이크 자습서 ** : [cmake.org/cmake/help/latest/guide/tutorial] (LINK_4)
- Modern CMake : cliutils.gitlab.io/modern-cmake
- ** CMake 예제 **: github.com/ttroy50/cmake-examples