-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
138 lines (115 loc) · 6.42 KB
/
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
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# The name of our project
project(OpenGLTutorial)
enable_language(CXX)
# we want to use a recent version of cmake
cmake_minimum_required(VERSION 3.18)
MESSAGE(STATUS "build type is: ${CMAKE_BUILD_TYPE}")
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})#/${CMAKE_BUILD_TYPE})
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}")
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}")
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}")
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}")
# for chapter 8 we need a file to load
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/models/rubberToy.obj
DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
#file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/models/rubberToy2.obj
#DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/models/tommy.obj
DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/textures/toylowres.jpg
DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/textures/body_diffuse.jpg
DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/textures/tankTops_pants_boots_diffuse.jpg
DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
# makes sure we have dependencies on our machine. sets variables for us
find_package(OpenGL REQUIRED)
find_package(glbinding REQUIRED)
find_package(glfw3 CONFIG REQUIRED)
find_package(glm REQUIRED)
find_package(fmt CONFIG REQUIRED)
#find_package(tinyobjloader CONFIG REQUIRED)
# takes the files in the src directory and adds them to a variable called SRC_LIST
aux_source_directory(src/ SRC_LIST)
# tells cmake that we are making an exectutable program
# whos source is from the files in the SRC_LIST variable
add_executable(chapter1_HelloWorld src/chapter1_HelloWorld.cpp)
add_executable(chapter2_windowCreation src/chapter2_windowCreation.cpp)
add_executable(chapter3_helloTriangle src/chapter3_helloTriangle.cpp)
add_executable(chapter4_errorHandling src/chapter4_errorHandling.cpp)
add_executable(chapter5_vertexData src/chapter5_vertexData.cpp)
add_executable(chapter6_multipleBuffers src/chapter6_multipleBuffers.cpp)
add_executable(chapter7_interleavingVertexData src/chapter7_interleavingVertexData.cpp)
add_executable(chapter8_multipleVAOs src/chapter8_multipleVAOs.cpp)
add_executable(chapter9_fullScreenEffectsShaderToy src/chapter9_fullScreenEffectsShaderToy.cpp)
add_executable(chapter10_sendingUniformDataToShaders src/chapter10_sendingUniformDataToShaders.cpp)
add_executable(chapter11_loading3DDataFromDisk src/chapter11_loading3DDataFromDisk.cpp)
add_executable(chapter11_loading3DDataFromDiskSimple src/chapter11_loading3DDataFromDiskSimple.cpp)
add_executable(chapter12_shaderTransforms src/chapter12_shaderTransforms.cpp)
add_executable(chapter13_elementBuffers src/chapter13_elementBuffers.cpp)
add_executable(chapter14_textures src/chapter14_textures.cpp)
add_executable(chapter15_basicDiffuseLighting src/chapter15_basicDiffuseLighting.cpp)
add_executable(chapter16_multipleTextures src/chapter16_multipleTextures.cpp)
add_executable(chapter17_textureArrays src/chapter17_textureArrays.cpp)
add_executable(chapter18_drawIndirect src/chapter18_drawIndirect.cpp)
add_executable(chapter19_multiDrawIndexingBuffers src/chapter19_multiDrawIndexingBuffers.cpp)
# tells the compiler to use c++ 11
#set_property(GLOBAL PROPERTY CXX_STANDARD 17)
set_target_properties( chapter1_HelloWorld
chapter2_windowCreation
chapter3_helloTriangle
chapter4_errorHandling
chapter5_vertexData
chapter6_multipleBuffers
chapter7_interleavingVertexData
chapter8_multipleVAOs
chapter9_fullScreenEffectsShaderToy
chapter9_fullScreenEffectsShaderToy
chapter10_sendingUniformDataToShaders
chapter11_loading3DDataFromDisk
chapter11_loading3DDataFromDiskSimple
chapter12_shaderTransforms
chapter13_elementBuffers
chapter14_textures
chapter15_basicDiffuseLighting
chapter16_multipleTextures
chapter17_textureArrays
chapter18_drawIndirect
chapter19_multiDrawIndexingBuffers
PROPERTIES
CXX_STANDARD 17
CXX_EXTENSIONS OFF
)
set(LIBRARIES
fmt::fmt
glfw
${OpenGL_LIBRARIES}
glbinding::glbinding
glbinding::glbinding-aux
${STB_INCLUDE_DIRS}
)
# which libraries our program must link against
target_link_libraries(chapter1_HelloWorld PRIVATE ${LIBRARIES})
target_link_libraries(chapter2_windowCreation PRIVATE ${LIBRARIES})
target_link_libraries(chapter3_helloTriangle PRIVATE ${LIBRARIES})
target_link_libraries(chapter4_errorHandling PRIVATE ${LIBRARIES})
target_link_libraries(chapter5_vertexData PRIVATE ${LIBRARIES})
target_link_libraries(chapter6_multipleBuffers PRIVATE ${LIBRARIES})
target_link_libraries(chapter7_interleavingVertexData PRIVATE ${LIBRARIES})
target_link_libraries(chapter8_multipleVAOs PRIVATE ${LIBRARIES})
target_link_libraries(chapter9_fullScreenEffectsShaderToy PRIVATE ${LIBRARIES})
target_link_libraries(chapter9_fullScreenEffectsShaderToy PRIVATE ${LIBRARIES})
target_link_libraries(chapter10_sendingUniformDataToShaders PRIVATE ${LIBRARIES})
target_link_libraries(chapter11_loading3DDataFromDisk PRIVATE ${LIBRARIES} )
target_link_libraries(chapter11_loading3DDataFromDiskSimple PRIVATE ${LIBRARIES} )
target_link_libraries(chapter12_shaderTransforms PRIVATE ${LIBRARIES} )
target_link_libraries(chapter13_elementBuffers PRIVATE ${LIBRARIES} )
target_link_libraries(chapter14_textures PRIVATE ${LIBRARIES} )
target_link_libraries(chapter15_basicDiffuseLighting PRIVATE ${LIBRARIES} )
target_link_libraries(chapter16_multipleTextures PRIVATE ${LIBRARIES} )
target_link_libraries(chapter17_textureArrays PRIVATE ${LIBRARIES} )
target_link_libraries(chapter18_drawIndirect PRIVATE ${LIBRARIES} )
target_link_libraries(chapter19_multiDrawIndexingBuffers PRIVATE ${LIBRARIES} )
#target_link_libraries(testObj PRIVATE ${LIBRARIES})