CMake FetchContent
- 최상위 CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
cmake_minimum_required(VERSION 3.22)
project(CppProjectTemplate VERSION 1.0.0 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(LIBRARY_NAME Library)
set(EXECUTABLE_NAME Executable)
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/")
include(AddGitSubmodule)
include(FetchContent)
FetchContent_Declare(
nlohmann_json #프로젝트명 - 아래 page의 CMakeLists.txt 파일에 있음.
GIT_REPOSITORY https://github.com/nlohmann/json
GIT_TAG v3.11.3 #Release Tag 확인
GIT_SHALLOW TRUE)
FetchContent_MakeAvailable(nlohmann_json)
FetchContent_Declare(
fmt
GIT_REPOSITORY https://github.com/fmtlib/fmt
GIT_TAG 10.2.1
GIT_SHALLOW TRUE)
FetchContent_MakeAvailable(fmt)
FetchContent_Declare(
spdlog
GIT_REPOSITORY https://github.com/gabime/spdlog
GIT_TAG v1.13.0
GIT_SHALLOW TRUE)
FetchContent_MakeAvailable(spdlog)
FetchContent_Declare(
cxxopts
GIT_REPOSITORY https://github.com/jarro2783/cxxopts
GIT_TAG v3.1.1
GIT_SHALLOW TRUE)
FetchContent_MakeAvailable(cxxopts)
FetchContent_Declare(
Catch2
GIT_REPOSITORY https://github.com/catchorg/Catch2
GIT_TAG v2.13.9
GIT_SHALLOW TRUE)
FetchContent_MakeAvailable(Catch2)
add_subdirectory(configured)
add_subdirectory(external)
add_subdirectory(src)
add_subdirectory(app)
- 사용하고자 하는 파일
1
2
3
4
5
6
7
8
9
10
11
12
13
14
set(EXE_SOURCES "main.cpp")
set(EXE_INCLUDES "./")
add_executable(${EXECUTABLE_NAME} ${EXE_SOURCES})
target_include_directories(${EXECUTABLE_NAME} PUBLIC ${EXE_INCLUDES})
target_link_libraries(
${EXECUTABLE_NAME} PUBLIC
${LIBRARY_NAME}
nlohmann_json::nlohmann_json
fmt::fmt
spdlog::spdlog
cxxopts::cxxopts)
이후 cmake .. & cmake –build .
Ninja 설치때문인지 모르겠지만, 되던 빌드와 디버깅이 안되더는 경우가 발생 → build 폴더 삭제 후, 재시도 시 정상동작 확인
This post is licensed under CC BY 4.0 by the author.