본문 바로가기

Programming Languages/C++

[ C++ ] 빌드 도구 CMake 소스 버전 관리

mkdir -p /app/study/cpp/ch9

cd /app/study/cpp/ch9

cat <<'EOF' > /app/study/cpp/ch9/CMakeLists.txt
# 타 환경에서 빌드할 수 있는 최소 버전 명을 기입
cmake_minimum_required(VERSION 3.13.4)

project(testVersion VERSION 1.0)

# .in(input) 관례상 CMake로 인해 변환되는 파일의 파일 명 뒤 .in 확장자를 붙임
# @VAR@ 의 내용이 
configure_file(versionConfig.h.in versionConfig.h)

add_executable(${PROJECT_NAME} main.cpp)

# 프로젝트의 헤더파일 경로를 지정
# PROJECT_BINARY_DIR : 빌드 경로를 지정
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR})
EOF

cat <<'EOF' > /app/study/cpp/ch9/versionConfig.h.in
#pragma once

#define PROJECT_NAME "@PROJECT_NAME@"
#define PROJECT_VERSION_MAJOR @testVersion_VERSION_MAJOR@
#define PROJECT_VERSION_MINOR @testVersion_VERSION_MINOR@
EOF

cat <<'EOF' > /app/study/cpp/ch9/main.cpp
#include <iostream>
#include <versionConfig.h>

int main()
{
    std::cout << PROJECT_NAME << " Version " << PROJECT_VERSION_MAJOR << "." << PROJECT_VERSION_MINOR << '\n';

    return EXIT_SUCCESS;
}
EOF

mkdir -p /app/study/cpp/ch9/build

cmake -S /app/study/cpp/ch9 -B /app/study/cpp/ch9/build

# C(Change Directory) : 특정 디렉토리를 이동하여 make 명령을 실행. 현재 작업 디렉토리를 변경하지 않음
make -C /app/study/cpp/ch9/build/

/app/study/cpp/ch9/build/testVersion