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