1. 라이브러리 생성
mkdir -p /app/study/cpp/ch3
cd /app/study/cpp/ch3
cat <<'EOF' > /app/study/cpp/ch3/adder.h
#pragma once
namespace mathadder
{
int add(int a, int b);
float add(float a, float b);
}
EOF
cat <<'EOF' > /app/study/cpp/ch3/adder.cpp
#include "adder.h"
int mathadder::add(int a, int b)
{
return (a+b);
}
float mathadder::add(float a, float b)
{
return (a+b);
}
EOF
# cmake 버전 확인
cmake --version
cat <<'EOF' > /app/study/cpp/ch3/CMakeLists.txt
# 타 환경에서 빌드할 수 있는 최소 버전 명을 기입
cmake_minimum_required(VERSION 3.21.4)
# 프로젝트 이름 지정
project(mathadder)
# 생성할 라이브러리 파일 명 및 빌드 대상 소스 파일을 지정
add_library(mathadder adder.cpp)
EOF
# cmake 옵션 확인
cmake
mkdir -p /app/study/cpp/ch3/build
cd /app/study/cpp/ch3/build; cmake -S ..
make
2. 라이브러리 활용
mkdir -p /app/study/cpp/ch4
cd /app/study/cpp/ch4
mkdir -p /app/study/cpp/ch4/include
mkdir -p /app/study/cpp/ch4/lib
cp /app/study/cpp/ch3/adder.h /app/study/cpp/ch4/include/
cp /app/study/cpp/ch3/build/libmathadder.a /app/study/cpp/ch4/lib/
cat <<'EOF' > /app/study/cpp/ch4/main.cpp
#include "include/adder.h"
#include <iostream>
int main()
{
std::cout << "2 + 3 = " << mathadder::add(2, 3) << '\n';
return EXIT_SUCCESS;
}
EOF
# cmake 버전 확인
cmake --version
cat <<'EOF' > /app/study/cpp/ch4/CMakeLists.txt
# 타 환경에서 빌드할 수 있는 최소 버전 명을 기입
cmake_minimum_required(VERSION 3.21.4)
# 프로젝트 이름 지정
project(libTest)
# 생성할 실행 파일 명 및 빌드 대상 소스 파일을 지정
add_executable(testLIB main.cpp)
target_link_directories(testLIB PRIVATE ${CMAKE_SOURCE_DIR}/lib/)
target_link_libraries(testLIB mathadder)
EOF
mkdir -p /app/study/cpp/ch4/build
cd /app/study/cpp/ch4/build; cmake -S ..
make
/app/study/cpp/ch4/build/testLIB
3. 라이브러리 시스템 설치
mkdir -p /app/study/cpp/ch5
cd /app/study/cpp/ch5
cp -r /app/study/cpp/ch3/* /app/study/cpp/ch5/
cat <<'EOF' > /app/study/cpp/ch5/CMakeLists.txt
# 타 환경에서 빌드할 수 있는 최소 버전 명을 기입
cmake_minimum_required(VERSION 3.21.4)
# 프로젝트 이름 지정
project(mathadder)
# 생성할 라이브러리 파일 명 및 빌드 대상 소스 파일을 지정
add_library(mathadder adder.cpp)
#
set_target_properties(mathadder PROPERTIES PUBLIC_HEADER adder.h)
# 라이브러리를 /usr/local/lib 에 설치
# 공용 헤더를 /usr/local/include 에 설치
install(TARGETS mathadder LIBRARY DESTINATION lib
PUBLIC_HEADER DESTINATION include
)
EOF
rm -rf /app/study/cpp/ch5/build/*
cd /app/study/cpp/ch5/build; cmake -S ..
make install
4. 시스템에 설치된 라이브러리 활용
mkdir -p /app/study/cpp/ch6
cd /app/study/cpp/ch6
cat <<'EOF' > /app/study/cpp/ch6/main.cpp
#include <adder.h>
#include <iostream>
int main()
{
std::cout << "2 + 3 = " << mathadder::add(2, 3) << '\n';
return EXIT_SUCCESS;
}
EOF
cat <<'EOF' > /app/study/cpp/ch6/CMakeLists.txt
# 타 환경에서 빌드할 수 있는 최소 버전 명을 기입
cmake_minimum_required(VERSION 3.21.4)
# 프로젝트 이름 지정
project(testLIB)
# 생성할 실행 파일 명 및 빌드 대상 소스 파일을 지정
add_executable(testLIB main.cpp)
target_link_libraries(testLIB mathadder)
EOF
mkdir -p /app/study/cpp/ch6/build
cd /app/study/cpp/ch6/build; cmake -S ..
make
# 시스템에 설치된 라이브러리를 이용하여 잘 설치된 것을 확인
/app/study/cpp/ch6/build/testLIB
'Programming Languages > C++' 카테고리의 다른 글
[ C++ ] 빌드 도구 CMake 소스 버전 관리 (0) | 2024.10.24 |
---|---|
[ C++ ] 오픈소스 GLFS 라이브러리 사용 (0) | 2024.10.22 |
[ C++ ] 빌드 도구 CMake 모듈식 빌드 구조 생성 (0) | 2024.10.22 |
[ C++ ] 빌드 도구 CMake 기본 사용법 (0) | 2024.10.18 |
[ C++ ] 빌드 도구 Make 기본 사용법 (0) | 2024.10.18 |