반응형
728x170
이번에는 라이브러리를 추가해서 빌드하는 방법이다.
C++에서는 바로 square root 계산이 불가능하다.
내가 직접 구현하지 않는 이상.. 어디 라이브러리를 이용하는 것이 편하다.
아니면.. 그냥 cmath 쓰던가?
그럼 이제 라이브러리를 추가하는 작업을 CMakeLists.txt 에 추가해야 한다.
이번에 내가 추가할 MathFunctions는 MathFunctions 이라는 하위 디렉터리에 라이브러리를 넣을 생각이다.
즉, 헤더파일하고 source file도 넣을 예정이다. 소스에는 mysqrt라는 내 라이브러리에서 가져온 메서드를 쓸 생각이다.
새로운 라이브러리를 추가할 때는 아래 키워드를 쓴다.
add_library({library_name} {file_name})
을 쓴다.
만약 최상위 CMakeLists.txt 에서 라이브러리를 추가하려면 subdirectory를 설정하면 된다.
add_subdirectory()
이다.
다시 말해서 하위 디렉토리의 CMakeLists.txt에 있는 라이브러리에서만 할 수도 있고
그 상위 CMakeLists.txt에서도 라이브러리를 가져올 수 있다.
최상위 CMakeLists
cmake_minimum_required(VERSION 3.10)
# set the project name and version => 어떤 프로젝트를 빌드할지
project(Tutorial VERSION 1.0)
# specify the C++ standard => C++11로 하겠다는 뜻. C++11을 표준으로 하겠다.
# add executable 하기 전에 선언해야 한다.
set(CMAKE_C++_STANDARD 11)
set(CMAKE_C++_STANDARD_REQUIRED True)
# => USE_MYMATH 를 ON 즉,내 것을 쓰겠다.
option(USE_MYMATH "Use tutorial provided math implementation" ON)
# configure a header file to pass some of the CMake settings to the source code
# 헤더 파일을 소스 코드에 등록 => 현재 내가 가진 TutorialConfig.h.in 파일을 TutorialConfig.h 파일로 소스코드에 등록하겠다.
# => 소스코드에서 TutorialConfig.h 인클루드 가능
configure_file(TutorialConfig.h.in TutorialConfig.h)
#Why is it important that we configure TutorialConfig.h.in after the option for USE_MYMATH? option은 지켜야 한다.
#위의 option에서 선택한 것이다. ON 되어있다면 sub directory를 추가하고 등록한다.
if(USE_MYMATH)
# add the MathFunctions library => Library 경로
add_subdirectory(MathFunctions)
#변수 추가
list(APPEND EXTRA_LIBS MathFunctions)
list(APPEND EXTRA_INCLUDES "${PROJECT_SOURCE_DIR}/MathFunctions")
endif()
# add the executable => 어떤 소스 파일을 가져올지
add_executable(Tutorial tutorial.cpp)
#lib 링크 => MathFunction이 되겠다.
target_link_libraries(Tutorial PUBLIC ${EXTRA_LIBS})
# add the binary tree to the search path for include files so that we will find TutorialConfig.h
#이건 내가 좀 더 알아보겠다.
target_include_directories(Tutorial PUBLIC
"${PROJECT_BINARY_DIR}"
${EXTRA_INCLUDES}
)
MathFunctions의 CMakeLists
add_library(MathFunctions mysqrt.cxx)
저렇게만 추가하면 이전글과 같이
CMake 파일 만들고 build를 하면 된다.
참고 링크
https://cmake.org/cmake/help/latest/guide/tutorial/A%20Basic%20Starting%20Point.html
728x90
반응형
그리드형
'DevOps' 카테고리의 다른 글
GSLB, 트래픽이 높을 때 로드밸런싱하기 (0) | 2022.11.12 |
---|---|
PromQL과 MetricsQL 의 쿼리 최적화 방법(진행중) (0) | 2022.10.08 |
CMake 튜토리얼 - 1 (0) | 2022.09.16 |
Github, Github Action 을 이용하여 CI 구성하기 (0) | 2022.09.16 |
Continuos Integration / Continuous Delivery , CI / CD란? (0) | 2022.09.03 |