-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dependency.cmake
94 lines (88 loc) · 3.19 KB
/
Dependency.cmake
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# ExternalProject 관련 명령어 셋 추가
include(ExternalProject)
# Dependency 관련 변수 설정
set(DEP_INSTALL_DIR ${PROJECT_BINARY_DIR}/install) # PROJECT_BINARY_DIR 은 상수
set(DEP_INCLUDE_DIR ${DEP_INSTALL_DIR}/include)
set(DEP_LIB_DIR ${DEP_INSTALL_DIR}/lib)
# spdlog: fast logger library
# 다운로드 받아서 CMAKE 실행
ExternalProject_Add(
dep_spdlog # 프로젝트 컴파일할 때 대표 이름 선언
GIT_REPOSITORY "https://github.com/gabime/spdlog.git" # 사용하려고 하는 라이브러리의 Git 주소
GIT_TAG "v1.x" # 버전 세팅 (branch 이름 또는 Tag 이름)
GIT_SHALLOW 1 # 최신의 것만 다운로드 받을지 여부 0 - False, 1 - True
UPDATE_COMMAND "" # for no update step, 업데이트 필요 없이 안정화된 버전 사용
PATCH_COMMAND "" # for no patch step, 코드를 고치고 싶을 때 사용
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${DEP_INSTALL_DIR} # CMAKE Configure 인자, -D: Definition, 글로벌 변수 CMAKE_INSTALL_PREFIX 할당
TEST_COMMAND "" # for no test step
)
# Dependency 리스트 및 라이브러리 파일 리스트 추가
set(DEP_LIST ${DEP_LIST} dep_spdlog)
# $<>: generator 문법, CONFIG 가 Debug 모드면 d 를 붙이라는 의미
# Debug 환경에서 빌드 시 set(DEP_LIBS ${DEP_LIBS} spdlogd)
# <- DEP_LIBS = ["spdlogd.lib"]
set(DEP_LIBS ${DEP_LIBS} spdlog$<$<CONFIG:Debug>:d>)
ExternalProject_Add(
dep_glfw
GIT_REPOSITORY "https://github.com/glfw/glfw.git"
GIT_TAG "3.3.3"
GIT_SHALLOW 1
UPDATE_COMMAND ""
PATCH_COMMAND ""
TEST_COMMAND ""
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${DEP_INSTALL_DIR}
# GLFW 의 CMakeLists.txt > option 확인
-DGLFW_BUILD_EXAMPLES=OFF
-DGLFW_BUILD_TESTS=OFF
-DGLFW_BUILD_DOCS=OFF
)
set(DEP_LIST ${DEP_LIST} dep_glfw)
set(DEP_LIBS ${DEP_LIBS} glfw3)
# glad
ExternalProject_Add(
dep_glad
GIT_REPOSITORY "https://github.com/Dav1dde/glad"
GIT_TAG "v0.1.34"
GIT_SHALLOW 1
UPDATE_COMMAND ""
PATCH_COMMAND ""
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${DEP_INSTALL_DIR}
-DGLAD_INSTALL=ON
TEST_COMMAND ""
)
set(DEP_LIST ${DEP_LIST} dep_glad)
set(DEP_LIBS ${DEP_LIBS} glad)
# stb
ExternalProject_Add(
dep_stb
GIT_REPOSITORY "https://github.com/nothings/stb"
GIT_TAG "master"
GIT_SHALLOW 1
UPDATE_COMMAND ""
PATCH_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_COMMAND "" # header file 만 필요하기 때문에 빌드 필요 없음
TEST_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy # ${CMAKE_COMMAND} -E <- Windows, Mac 등 OS 에 구애받지 않도록, copy <- 복사 커맨드
${PROJECT_BINARY_DIR}/dep_stb-prefix/src/dep_stb/stb_image.h
${DEP_INSTALL_DIR}/include/stb/stb_image.h
)
set(DEP_LIST ${DEP_LIST} dep_stb)
# glm
ExternalProject_Add(
dep_glm
GIT_REPOSITORY "https://github.com/g-truc/glm"
GIT_TAG "0.9.9.8"
GIT_SHALLOW 1
UPDATE_COMMAND ""
PATCH_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
TEST_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory
${PROJECT_BINARY_DIR}/dep_glm-prefix/src/dep_glm/glm
${DEP_INSTALL_DIR}/include/glm
)
set(DEP_LIST ${DEP_LIST} dep_glm)