Skip to content

Commit c5bdede

Browse files
committed
update dependencies / add glfw3 window
1 parent a26b9f2 commit c5bdede

File tree

4 files changed

+120
-16
lines changed

4 files changed

+120
-16
lines changed

.vscode/settings.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66
"cmake.buildEnvironment": {},
77
"cmake.debugConfig": {
88
"args": []
9-
}
9+
},
10+
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
1011
}

CMakeLists.txt

+9-10
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,24 @@ cmake_minimum_required(VERSION 3.10)
22

33
set(PROJECT_NAME cpp_template)
44
set(CMAKE_CXX_STANDARD 17)
5+
## for debugging build script
6+
# set(CMAKE_VERBOSE_MAKEFILE ON)
57

68
project(${PROJECT_NAME})
79
include(Dependency.cmake)
810

11+
message("dep includes: ${DEPENDENCY_INCLUDE_DIR}")
12+
message("dep libs: ${DEPENDENCY_LIBS}")
13+
914
add_executable(${PROJECT_NAME}
1015
src/main.cpp
1116
)
1217

13-
target_include_directories(${PROJECT_NAME} PUBLIC
14-
${DEPENDENCY_INCLUDE_DIR}
15-
)
18+
target_include_directories(${PROJECT_NAME} PUBLIC ${DEPENDENCY_INCLUDE_DIR})
19+
target_link_directories(${PROJECT_NAME} PUBLIC ${DEPENDENCY_LIB_DIR})
20+
target_link_libraries(${PROJECT_NAME} PUBLIC ${DEPENDENCY_LIBS})
1621

17-
target_link_libraries(${PROJECT_NAME} PUBLIC
18-
${DEPENDENCY_LIBS}
19-
)
20-
21-
add_dependencies(${PROJECT_NAME}
22-
${DEPENDENCY_LIST}
23-
)
22+
add_dependencies(${PROJECT_NAME} ${DEPENDENCY_LIST})
2423

2524
if (MSVC)
2625
target_compile_options(${PROJECT_NAME} PUBLIC /wd4566 /wd4819 /wd4251 /wd4244 /wd4267)

Dependency.cmake

+86-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ endif()
88

99
set(DEPENDENCY_INSTALL_DIR ${PROJECT_BINARY_DIR}/install)
1010
set(DEPENDENCY_INCLUDE_DIR ${DEPENDENCY_INSTALL_DIR}/include)
11-
set(DEPENDENCY_LIBS ${LINK_DIR_OPTION}${DEPENDENCY_INSTALL_DIR}/lib)
11+
set(DEPENDENCY_LIB_DIR ${DEPENDENCY_INSTALL_DIR}/lib)
12+
# set(DEPENDENCY_LIBS ${LINK_DIR_OPTION}${DEPENDENCY_LIB_DIR})
1213

1314
# spdlog: fast logger library
1415
ExternalProject_Add(
@@ -22,7 +23,12 @@ ExternalProject_Add(
2223
TEST_COMMAND ""
2324
)
2425
set(DEPENDENCY_LIST ${DEPENDENCY_LIST} dep-spdlog)
25-
set(DEPENDENCY_LIBS ${DEPENDENCY_LIBS} spdlog$<$<CONFIG:Debug>:d>)
26+
# if (GENERATOR_IS_MULTI_CONFIG)
27+
if (WIN32)
28+
set(DEPENDENCY_LIBS ${DEPENDENCY_LIBS} spdlog$<$<CONFIG:Debug>:d>)
29+
else()
30+
set(DEPENDENCY_LIBS ${DEPENDENCY_LIBS} spdlog)
31+
endif()
2632

2733
# clipp: header-only good c++ argument parser
2834
ExternalProject_Add(
@@ -62,7 +68,7 @@ set(DEPENDENCY_LIST ${DEPENDENCY_LIST} dep-json)
6268
ExternalProject_Add(
6369
dep_magic_enum
6470
GIT_REPOSITORY "https://github.com/Neargye/magic_enum.git"
65-
GIT_TAG "v0.6.6"
71+
GIT_TAG "v0.7.3"
6672
GIT_SHALLOW 1
6773
UPDATE_COMMAND ""
6874
PATCH_COMMAND ""
@@ -89,3 +95,80 @@ ExternalProject_Add(
8995
TEST_COMMAND ""
9096
)
9197
set(DEPENDENCY_LIST ${DEPENDENCY_LIST} dep_filesystem)
98+
99+
# glfw
100+
ExternalProject_Add(
101+
dep_glfw
102+
GIT_REPOSITORY "https://github.com/glfw/glfw.git"
103+
GIT_TAG "3.3-stable"
104+
GIT_SHALLOW 1
105+
UPDATE_COMMAND ""
106+
PATCH_COMMAND ""
107+
CMAKE_ARGS
108+
-DCMAKE_INSTALL_PREFIX=${DEPENDENCY_INSTALL_DIR}
109+
-DGLFW_BUILD_EXAMPLES=OFF
110+
-DGLFW_BUILD_TESTS=OFF
111+
-DGLFW_BUILD_DOCS=OFF
112+
TEST_COMMAND ""
113+
)
114+
set(DEPENDENCY_LIST ${DEPENDENCY_LIST} dep_glfw)
115+
set(DEPENDENCY_LIBS ${DEPENDENCY_LIBS} glfw3)
116+
117+
## additional dependencies, for graphics programming
118+
119+
# # stb: the king of header-only libraries
120+
# ExternalProject_Add(
121+
# dep-stb
122+
# GIT_REPOSITORY "https://github.com/nothings/stb.git"
123+
# GIT_SHALLOW 1
124+
# UPDATE_COMMAND ""
125+
# PATCH_COMMAND ""
126+
# CONFIGURE_COMMAND ""
127+
# BUILD_COMMAND ""
128+
# INSTALL_COMMAND
129+
# ${CMAKE_COMMAND} -E make_directory ${DEPENDENCY_INSTALL_DIR}/include &&
130+
# ${CMAKE_COMMAND} -E copy
131+
# ${CMAKE_CURRENT_BINARY_DIR}/dep-stb-prefix/src/dep-stb/stb_image.h ${DEPENDENCY_INSTALL_DIR}/include
132+
# ${CMAKE_CURRENT_BINARY_DIR}/dep-stb-prefix/src/dep-stb/stb_truetype.h ${DEPENDENCY_INSTALL_DIR}/include
133+
# TEST_COMMAND ""
134+
# )
135+
# set(DEPENDENCY_LIST ${DEPENDENCY_LIST} dep-stb)
136+
137+
# # linalg.h: single header, public domain, short vector math library for c++
138+
# ExternalProject_Add(
139+
# dep-linalg
140+
# GIT_REPOSITORY "https://github.com/sgorsten/linalg.git"
141+
# GIT_TAG main
142+
# GIT_SHALLOW 1
143+
# UPDATE_COMMAND ""
144+
# PATCH_COMMAND ""
145+
# CONFIGURE_COMMAND ""
146+
# BUILD_COMMAND ""
147+
# INSTALL_COMMAND
148+
# ${CMAKE_COMMAND} -E make_directory ${DEPENDENCY_INSTALL_DIR}/include &&
149+
# ${CMAKE_COMMAND} -E copy
150+
# ${CMAKE_CURRENT_BINARY_DIR}/dep-linalg-prefix/src/dep-linalg/linalg.h ${DEPENDENCY_INSTALL_DIR}/include
151+
# TEST_COMMAND ""
152+
# )
153+
# set(DEPENDENCY_LIST ${DEPENDENCY_LIST} dep-linalg)
154+
155+
# # imgui: best immediate-mode gui library for all graphics applications
156+
# ExternalProject_Add(
157+
# dep-imgui
158+
# GIT_REPOSITORY "https://github.com/ocornut/imgui.git"
159+
# GIT_TAG v1.85
160+
# GIT_SHALLOW 1
161+
# UPDATE_COMMAND ""
162+
# PATCH_COMMAND
163+
# ${CMAKE_COMMAND} -E copy
164+
# ${CMAKE_CURRENT_SOURCE_DIR}/cmake/imgui.cmake
165+
# ${CMAKE_CURRENT_BINARY_DIR}/dep-imgui-prefix/src/dep-imgui/CMakeLists.txt
166+
# CMAKE_ARGS
167+
# -DCMAKE_INSTALL_PREFIX=${DEPENDENCY_INSTALL_DIR}
168+
# -DIMGUI_GLFW_INCLUDE_DIR=${DEPENDENCY_INCLUDE_DIR}
169+
# -DIMGUI_VULKAN_INCLUDE_DIR=${Vulkan_INCLUDE_DIR}
170+
# TEST_COMMAND ""
171+
# )
172+
# add_dependencies(dep-imgui dep-glfw)
173+
# set(DEPENDENCY_LIST ${DEPENDENCY_LIST} dep-imgui)
174+
# set(DEPENDENCY_LIBS ${DEPENDENCY_LIBS} imgui)

src/main.cpp

+23-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,29 @@
77
#include <ghc/filesystem.hpp>
88
#include <magic_enum.hpp>
99
#include <clipp.h>
10+
#include <GLFW/glfw3.h>
1011

1112
int main(int argc, const char** argv) {
12-
SPDLOG_INFO("Hello, world!");
13+
SPDLOG_INFO("Initialize glfw");
14+
if (!glfwInit()) {
15+
const char* description = nullptr;
16+
glfwGetError(&description);
17+
SPDLOG_ERROR("failed to initialize glfw: {}", description);
18+
return -1;
19+
}
20+
21+
auto window = glfwCreateWindow(640, 480, "First window", nullptr, nullptr);
22+
if (!window) {
23+
SPDLOG_ERROR("failed to create glfw window");
24+
glfwTerminate();
25+
return -1;
26+
}
27+
28+
while (!glfwWindowShouldClose(window)) {
29+
glfwPollEvents();
30+
}
31+
32+
glfwTerminate();
1333
return 0;
14-
}
34+
}
35+

0 commit comments

Comments
 (0)