CMake를 사용한 실제 프로젝트 예제를 통해 CMake의 사용 방법과 구조를 이해해보겠다. 이 예제에서는 간단한 C++ 프로젝트를 빌드하는 과정을 다루며, 프로젝트는 하나의 실행 파일을 생성하고, 외부 라이브러리를 포함하는 것으로 구성된다.
프로젝트 구조
예제 프로젝트의 디렉토리 구조는 다음과 같다:
MyProject/
├── CMakeLists.txt
├── src/
│ ├── main.cpp
│ └── mylib.cpp
├── include/
│ └── mylib.h
└── external/
└── CMakeLists.txt
src/
: 소스 파일들이 위치하는 디렉토리이다.include/
: 헤더 파일들이 위치하는 디렉토리이다.external/
: 외부 라이브러리를 관리하는 디렉토리이다.CMakeLists.txt
: 프로젝트의 최상위 CMake 설정 파일이다.
CMakeLists.txt 파일 구성
최상위 CMakeLists.txt
먼저, 프로젝트의 최상위 CMakeLists.txt
파일을 작성한다.
cmake_minimum_required(VERSION 3.10)
project(MyProject LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
include_directories(${CMAKE_SOURCE_DIR}/include)
add_subdirectory(src)
add_subdirectory(external)
이 파일에서는 프로젝트 이름을 MyProject
로 설정하고, C++11 표준을 사용하도록 지정 하였다. include_directories
명령을 통해 include/
디렉토리를 포함 경로에 추가했으며, add_subdirectory
명령을 사용해 src/
와 external/
디렉토리를 추가 하였다.
src/CMakeLists.txt
다음으로, src/
디렉토리 내의 CMakeLists.txt
파일을 작성한다.
set(SOURCES
main.cpp
mylib.cpp
)
add_executable(MyProject ${SOURCES})
target_link_libraries(MyProject MyExternalLib)
이 파일에서는 main.cpp
와 mylib.cpp
파일을 소스 파일로 지정하고, 이를 기반으로 MyProject
실행 파일을 생성한다. 또한, target_link_libraries
명령을 사용해 외부 라이브러리 MyExternalLib
와 링크한다.
external/CMakeLists.txt
마지막으로, external/
디렉토리의 CMakeLists.txt
파일을 작성한다. 이 예제에서는 외부 라이브러리의 빌드 설정을 정의한다.
add_library(MyExternalLib STATIC IMPORTED)
set_target_properties(MyExternalLib PROPERTIES
IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/external/libMyExternalLib.a"
)
이 파일에서는 MyExternalLib
라는 정적 라이브러리를 정의하고, IMPORTED_LOCATION
속성을 통해 외부 라이브러리 파일의 경로를 지정 하였다.
소스 파일 작성
main.cpp
#include "mylib.h"
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
mylib_function();
return 0;
}
main.cpp
는 프로그램의 진입점으로, mylib.h
에서 제공하는 함수를 호출한다.
mylib.h
#pragma once
void mylib_function();
mylib.h
는 mylib.cpp
에서 구현된 함수의 선언을 포함하는 헤더 파일이다.
mylib.cpp
#include "mylib.h"
#include <iostream>
void mylib_function() {
std::cout << "MyLib Function Called!" << std::endl;
}
mylib.cpp
는 mylib_function
의 구현을 포함하며, 이 함수는 콘솔에 메시지를 출력한다.
빌드 및 실행
이제 프로젝트를 빌드하고 실행할 수 있다.
-
프로젝트 디렉토리로 이동한다:
cd MyProject
-
빌드 디렉토리를 생성하고 이동한다:
mkdir build && cd build
-
CMake를 실행하여 빌드 파일을 생성한다:
cmake ..
-
make
명령을 사용해 프로젝트를 빌드한다:make
-
생성된 실행 파일을 실행한다:
./MyProject
이 과정이 성공적으로 완료되면, 프로그램이 실행되어 "Hello, World!"와 "MyLib Function Called!" 메시지를 출력한다.
이 예제는 CMake를 사용하여 간단한 C++ 프로젝트를 빌드하는 방법을 설명하며, 소스 파일 관리, 외부 라이브러리 포함, 빌드 설정 등을 다루었다.