CMake
[CMake] CMake 기본 예제 - 01 실행파일 생성 (여러 소스파일 + C++ 표준 설정)
2025. 11. 30. 18:02반응형
운영체제 환경: Ubuntu
프로젝트 구조
multi-files/
├── CMakeLists.txt
├── main.cpp
├── math_utils.cpp
└── math_utils.h
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(MathApp VERSION 1.0)
# C++17 표준 사용
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 컴파일러 경고 활성화
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
# 실행 파일 생성
add_executable(mathapp
main.cpp
math_utils.cpp
)
코드 설명:
cmake_minimum_required:
이 프로젝트를 빌드 하는데 필요한 CMake의 최소 버전을 지정합니다. CMakeLists.txt파일의 첫 번째 명령어로 오는게 관례이고 project() 보다 먼저와야합니다.
project:
현재 CMake 프로젝트의 이름과 지원하는 언어를 정의합니다. (예: Visual Studio의 솔루션 이름, IDE에서 표시되는 이름)
형식은 아래와 같으며
project(<PROJECT-NAME> [VERSION <version>] [LANGUAGES <language>...])
해당 프로젝트가 C++와 C를 모두 지원하는 경우 아래처럼 쓰이기도 합니다.
예시)
project(MyAwesomeApp VERSION 1.0 LANGUAGES CXX C)
set:
CMake 내부에서 사용할 변수(Variable)를 정의하거나 값을 설정합니다.
컴파일러 플래그, 소스 파일 목록, 라이브러리 경로 등 재사용하거나 조건부로 변경할 필요가 있는 정보를 저장합니다.
변수는 ${변수명} 형식으로 다른 명령어에서 참조될 수 있습니다.
형식)
set(<variable> <value>... [PARENT_SCOPE] [CACHE] [FORCE])
예시)
set(SOURCE_FILES main.cpp utility.cpp)
set(CMAKE_CXX_STANDARD 17) # C++17 표준 사용 설정
add_executable:
지정된 소스 파일로 부터 어떤 실행파일을 만들지를 지정합니다. add_executable의 첫번째 인자는 실행파일 이름입니다.
- add_executable(<실행파일 이름> <옵션들>... <소스파일들>...) (참고: add_executable 문법)
예시)
# 'myapp'이라는 이름의 실행 파일을 main.cpp와 SOURCE_FILES 변수의 파일들로 생성
add_executable(myapp main.cpp ${SOURCE_FILES})
소스 및 헤더파일들
math_utils.h:
#ifndef MATH_UTILS_H
#define MATH_UTILS_H
int add(int a, int b);
int multiply(int a, int b);
#endif
math_utils.cpp:
#include "math_utils.h"
int add(int a, int b) {
return a + b;
}
int multiply(int a, int b) {
return a * b;
}
main.cpp:
#include <iostream>
#include "math_utils.h"
int main() {
std::cout << "5 + 3 = " << add(5, 3) << std::endl;
std::cout << "5 * 3 = " << multiply(5, 3) << std::endl;
return 0;
}
빌드 및 실행
mkdir build && cd build
cmake ..
make
./mathapp
실행 결과
5 + 3 = 8
5 * 3 = 15
반응형
'CMake' 카테고리의 다른 글
| [CMake] Module(모듈) (0) | 2025.12.03 |
|---|---|
| [CMake] CMake 기본 예제 - 02 실행파일 생성 (헤더 파일 디렉토리 분리) (0) | 2025.11.30 |
| [CMake] CMake 기본 개념 (0) | 2025.11.30 |
