Skip to content

Commit 56ac60d

Browse files
authored
Merge pull request #53 from pppppass/master
Update CMakeLists.txt
2 parents 961efff + ecd787e commit 56ac60d

File tree

2 files changed

+283
-14
lines changed

2 files changed

+283
-14
lines changed

Collision/CMakeLists.txt

Lines changed: 280 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
##########################################################################
2-
# build/CMakeLists-Win-msys64.txt of project Collision
2+
# CMakeLists.txt of project Collision
33
# Author : lzh
44
# Modifier : lzh
55
# Description : Instruction file for CMake to generate Makefile.
@@ -25,30 +25,296 @@ SET(COLLISION_SRCS collision.cpp display.cpp draw.cpp update.cpp game.cpp global
2525

2626
ADD_EXECUTABLE(${COLLISION_EXE_NAME} ${COLLISION_SRCS})
2727

28+
# Setup option list
29+
30+
OPTION(CMAKE_WITH_DEBUG "Generate Makefile in debug mode in cmake" OFF)
31+
32+
OPTION(BUILD_WITH_STATIC "Switch to build statically" OFF)
33+
OPTION(BUILD_WITH_DEBUG "Switch to build in debug mode" OFF)
34+
35+
SET(COLLISION_INCLUDE_DIR "" CACHE STRING "Include directories for the whole project")
36+
SET(COLLISION_LIBRARY_DIR "" CACHE STRING "Library paths for the whole project")
37+
38+
OPTION(HINT_JPEG_FOUND "Switch to hint for libjpeg" OFF)
39+
SET(HINT_JPEG_INCLUDE_DIR "" CACHE STRING "Include directories hinting for libjpeg")
40+
SET(HINT_JPEG_LIBRARY "" CACHE STRING "Library names hinting for libjpeg")
41+
42+
OPTION(HINT_OPENGL_FOUND "Switch to hint for OpenGL" OFF)
43+
SET(HINT_OPENGL_INCLUDE_DIR "" CACHE STRING "Include directories hinting for OpenGL")
44+
SET(HINT_OPENGL_LIBRARY "" CACHE STRING "Library names hinting for OpenGL")
45+
46+
OPTION(HINT_GLU_FOUND "Switch to hint for glu" OFF)
47+
SET(HINT_GLU_INCLUDE_DIR "" CACHE STRING "Include directories hinting for glu")
48+
SET(HINT_GLU_LIBRARY "" CACHE STRING "Library names hinting for glu")
49+
50+
OPTION(HINT_GLFW3_FOUND "Switch to hint for glfw3" OFF)
51+
SET(HINT_GLFW3_INCLUDE_DIR "" CACHE STRING "Include directories hinting for glfw3")
52+
SET(HINT_GLFW3_LIBRARY "" CACHE STRING "Library names hinting for glfw3")
53+
54+
OPTION(HINT_OPENAL_FOUND "Switch to hint for OpenAL" OFF)
55+
SET(HINT_OPENAL_INCLUDE_DIR "" CACHE STRING "Include directories hinting for OpenAL")
56+
SET(HINT_OPENAL_LIBRARY "" CACHE STRING "Library names hinting for OpenAL")
57+
58+
OPTION(HINT_ALUT_FOUND "Switch to hint for alut" OFF)
59+
SET(HINT_ALUT_INCLUDE_DIR "" CACHE STRING "Include directories hinting for alut")
60+
SET(HINT_ALUT_LIBRARY "" CACHE STRING "Library names hinting for alut")
61+
2862
# Setup libraries list
2963

30-
IF (WIN32)
31-
SET(COLLISION_LIBS glfw3 glu32 opengl32 winmm gdi32 jpeg \"alut.dll\" \"openal.dll\" m)
32-
ELSEIF (APPLE)
33-
SET(COLLISION_LIBS "-dylib libglfw" "-dylib openal" jpeg "-framework GLUT" alut "-framework OpenGL")
34-
ELSEIF (UNIX)
35-
SET(COLLISION_LIBS glfw GL GLU jpeg alut openal m)
64+
INCLUDE_DIRECTORIES(${COLLISION_INCLUDE_DIR})
65+
LINK_DIRECTORIES(${COLLISION_LIBRARY_DIR})
66+
67+
FIND_PACKAGE(PkgConfig)
68+
69+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${COLLISION_LIBS})
70+
71+
IF (HINT_JPEG_FOUND)
72+
INCLUDE_DIRECTORIES(${HINT_JPEG_INCLUDE_DIR})
73+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${HINT_JPEG_LIBRARY})
74+
IF (CMAKE_WITH_DEBUG)
75+
MESSAGE(STATUS "libjpeg found by HINT mode.")
76+
ENDIF ()
77+
ENDIF ()
78+
IF (NOT HINT_JPEG_FOUND AND PKGCONFIG_FOUND)
79+
PKG_SEARCH_MODULE(PC_JPEG jpeg libjpeg)
80+
IF ((BUILD_WITH_STATIC STREQUAL "ON") AND PC_JPEG_STATIC_FOUND)
81+
INCLUDE_DIRECTORIES(${PC_JPEG_STATIC_INCLUDE_DIRS})
82+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_JPEG_STATIC_LIBRARIES})
83+
IF (CMAKE_WITH_DEBUG)
84+
MESSAGE(STATUS "libjpeg found by PC-STATIC mode.")
85+
ENDIF ()
86+
ELSEIF (PC_JPEG_FOUND)
87+
INCLUDE_DIRECTORIES(${PC_JPEG_INCLUDE_DIRS})
88+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_JPEG_LIBRARIES})
89+
IF (CMAKE_WITH_DEBUG)
90+
MESSAGE(STATUS "libjpeg found by PC mode.")
91+
ENDIF ()
92+
ENDIF ()
93+
ENDIF ()
94+
IF (NOT HINT_JPEG_FOUND AND NOT PC_JPEG_FOUND)
95+
FIND_PACKAGE(JPEG)
96+
IF (JPEG_FOUND)
97+
INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR})
98+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${JPEG_LIBRARY})
99+
IF (CMAKE_WITH_DEBUG)
100+
MESSAGE(STATUS "libjpeg found by CMAKE mode.")
101+
ENDIF ()
102+
ENDIF ()
103+
ENDIF ()
104+
IF (NOT HINT_JPEG_FOUND AND NOT JPEG_FOUND AND NOT PC_JPEG_FOUND AND NOT PC_JPEG_STATIC_FOUND)
105+
MESSAGE(FATAL_ERROR "Cannot find the libjpeg library.")
36106
ENDIF ()
37107

108+
IF (HINT_OPENGL_FOUND)
109+
INCLUDE_DIRECTORIES(${HINT_OPENGL_INCLUDE_DIR})
110+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${HINT_OPENGL_LIBRARY})
111+
IF (CMAKE_WITH_DEBUG)
112+
MESSAGE(STATUS "OpenGL found by HINT mode.")
113+
ENDIF ()
114+
ENDIF ()
115+
IF (NOT HINT_OPENGL_FOUND AND PKGCONFIG_FOUND)
116+
PKG_SEARCH_MODULE(PC_OPENGL OpenGL GL gl opengl32)
117+
IF ((BUILD_WITH_STATIC STREQUAL "ON") AND PC_OPENGL_STATIC_FOUND)
118+
INCLUDE_DIRECTORIES(${PC_OPENGL_STATIC_INCLUDE_DIRS})
119+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_OPENGL_STATIC_LIBRARIES})
120+
IF (CMAKE_WITH_DEBUG)
121+
MESSAGE(STATUS "OpenGL found by PC-STATIC mode.")
122+
ENDIF ()
123+
ELSEIF (PC_OPENGL_FOUND)
124+
INCLUDE_DIRECTORIES(${PC_OPENGL_INCLUDE_DIRS})
125+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_OPENGL_LIBRARIES})
126+
IF (CMAKE_WITH_DEBUG)
127+
MESSAGE(STATUS "OpenGL found by PC mode.")
128+
ENDIF ()
129+
ENDIF ()
130+
ENDIF ()
131+
IF (NOT HINT_OPENGL_FOUND AND NOT PC_OPENGL_FOUND)
132+
FIND_PACKAGE(OPENGL)
133+
IF (OPENGL_FOUND)
134+
INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
135+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${OPENGL_gl_LIBRARY})
136+
IF (CMAKE_WITH_DEBUG)
137+
MESSAGE(STATUS "OpenGL found by CMAKE mode.")
138+
ENDIF ()
139+
ENDIF ()
140+
ENDIF ()
141+
IF (NOT HINT_OPENGL_FOUND AND NOT OPENGL_FOUND AND NOT PC_OPENGL_FOUND AND NOT PC_OPENGL_STATIC_FOUND)
142+
MESSAGE(FATAL_ERROR "Cannot find the OpenGL library.")
143+
ENDIF ()
38144

39-
# Add include directories to search for the target
145+
IF (HINT_GLU_FOUND)
146+
INCLUDE_DIRECTORIES(${HINT_GLU_INCLUDE_DIR})
147+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${HINT_GLU_LIBRARY})
148+
IF (CMAKE_WITH_DEBUG)
149+
MESSAGE(STATUS "glu found by HINT mode.")
150+
ENDIF ()
151+
ENDIF ()
152+
IF (NOT HINT_GLU_FOUND AND OPENGL_GLU_FOUND)
153+
INCLUDE_DIRECTORIES(${OPENGL_glu_INCLUDE_DIR})
154+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${OPENGL_glu_LIBRARY})
155+
IF (CMAKE_WITH_DEBUG)
156+
MESSAGE(STATUS "glu found by OpenGL-glu mode.")
157+
ENDIF ()
158+
ENDIF ()
159+
IF (NOT HINT_GLU_FOUND AND NOT OPENGL_GLU_FOUND AND PKGCONFIG_FOUND)
160+
PKG_SEARCH_MODULE(PC_GLU glu GLU glu32)
161+
IF ((BUILD_WITH_STATIC STREQUAL "ON") AND PC_GLU_STATIC_FOUND)
162+
INCLUDE_DIRECTORIES(${PC_GLU_STATIC_INCLUDE_DIRS})
163+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_GLU_STATIC_LIBRARIES})
164+
IF (CMAKE_WITH_DEBUG)
165+
MESSAGE(STATUS "glu found by PC-STATIC mode.")
166+
ENDIF ()
167+
ELSEIF (PC_GLU_FOUND)
168+
INCLUDE_DIRECTORIES(${PC_GLU_INCLUDE_DIRS})
169+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_GLU_LIBRARIES})
170+
IF (CMAKE_WITH_DEBUG)
171+
MESSAGE(STATUS "glu found by PC mode.")
172+
ENDIF ()
173+
ENDIF ()
174+
ENDIF ()
175+
IF (NOT HINT_GLU_FOUND AND NOT OPENGL_GLU_FOUND AND NOT PC_GLU_FOUND)
176+
FIND_PACKAGE(GLU)
177+
IF (GLU_FOUND)
178+
INCLUDE_DIRECTORIES(${GLU_INCLUDE_DIR})
179+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${GLU_LIBRARY})
180+
IF (CMAKE_WITH_DEBUG)
181+
MESSAGE(STATUS "glu found by CMAKE mode.")
182+
ENDIF ()
183+
ENDIF ()
184+
ENDIF ()
185+
IF (NOT HINT_GLU_FOUND AND NOT OPENGL_GLU_FOUND AND NOT GLU_FOUND AND NOT PC_GLU_FOUND AND NOT PC_GLU_STATIC_FOUND)
186+
MESSAGE(FATAL_ERROR "Cannot find the glu library.")
187+
ENDIF ()
40188

41-
TARGET_LINK_LIBRARIES (${COLLISION_EXE_NAME} ${COLLISION_LIBS})
189+
IF (HINT_GLFW3_FOUND)
190+
INCLUDE_DIRECTORIES(${HINT_GLFW3_INCLUDE_DIR})
191+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${HINT_GLFW3_LIBRARY})
192+
IF (CMAKE_WITH_DEBUG)
193+
MESSAGE(STATUS "glfw3 found by HINT mode.")
194+
ENDIF ()
195+
ENDIF ()
196+
IF (NOT HINT_GLFW3_FOUND AND PKGCONFIG_FOUND)
197+
PKG_SEARCH_MODULE(PC_GLFW3 glfw3 glfw)
198+
IF ((BUILD_WITH_STATIC STREQUAL "ON") AND PC_GLFW3_STATIC_FOUND)
199+
INCLUDE_DIRECTORIES(${PC_GLFW3_STATIC_INCLUDE_DIRS})
200+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_GLFW3_STATIC_LIBRARIES})
201+
IF (CMAKE_WITH_DEBUG)
202+
MESSAGE(STATUS "glfw3 found by PC-STATIC mode.")
203+
ENDIF ()
204+
ELSEIF (PC_GLFW3_FOUND)
205+
INCLUDE_DIRECTORIES(${PC_GLFW3_INCLUDE_DIRS})
206+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_GLFW3_LIBRARIES})
207+
IF (CMAKE_WITH_DEBUG)
208+
MESSAGE(STATUS "glfw3 found by PC mode.")
209+
ENDIF ()
210+
ENDIF ()
211+
ENDIF ()
212+
IF (NOT HINT_GLFW3_FOUND AND NOT PC_GLFW3_FOUND)
213+
FIND_PACKAGE(GLFW3)
214+
IF (GLFW3_FOUND)
215+
SET(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
216+
SET(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
217+
SET(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
218+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} glfw)
219+
IF (CMAKE_WITH_DEBUG)
220+
MESSAGE(STATUS "glfw3 found by CMAKE mode.")
221+
ENDIF ()
222+
ENDIF ()
223+
ENDIF ()
224+
IF (NOT HINT_GLFW3_FOUND AND NOT GLFW3_FOUND AND NOT PC_GLFW3_FOUND AND NOT PC_GLFW3_STATIC_FOUND)
225+
MESSAGE(FATAL_ERROR "Cannot find the glfw3 library.")
226+
ENDIF ()
227+
228+
IF (HINT_OPENAL_FOUND)
229+
INCLUDE_DIRECTORIES(${HINT_OPENAL_INCLUDE_DIR})
230+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${HINT_OPENAL_LIBRARY})
231+
IF (CMAKE_WITH_DEBUG)
232+
MESSAGE(STATUS "OpenAL found by HINT mode.")
233+
ENDIF ()
234+
ENDIF ()
235+
IF (NOT HINT_OPENAL_FOUND AND PKGCONFIG_FOUND)
236+
PKG_SEARCH_MODULE(PC_OPENAL OpenAL openal)
237+
IF ((BUILD_WITH_STATIC STREQUAL "ON") AND PC_OPENAL_STATIC_FOUND)
238+
INCLUDE_DIRECTORIES(${PC_OPENAL_STATIC_INCLUDE_DIRS})
239+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_OPENAL_STATIC_LIBRARIES})
240+
IF (CMAKE_WITH_DEBUG)
241+
MESSAGE(STATUS "OpenAL found by PC-STATIC mode.")
242+
ENDIF ()
243+
ELSEIF (PC_OPENAL_FOUND)
244+
INCLUDE_DIRECTORIES(${PC_OPENAL_INCLUDE_DIRS})
245+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_OPENAL_LIBRARIES})
246+
IF (CMAKE_WITH_DEBUG)
247+
MESSAGE(STATUS "OpenAL found by PC mode.")
248+
ENDIF ()
249+
ENDIF ()
250+
ENDIF ()
251+
IF (NOT HINT_OPENAL_FOUND AND NOT PC_OPENAL_FOUND)
252+
FIND_PACKAGE(OPENAL)
253+
IF (OPENAL_FOUND)
254+
INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR})
255+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${OPENAL_LIBRARY})
256+
IF (CMAKE_WITH_DEBUG)
257+
MESSAGE(STATUS "OpenAL found by CMAKE mode.")
258+
ENDIF ()
259+
ENDIF ()
260+
ENDIF ()
261+
IF (NOT HINT_OPENAL_FOUND AND NOT OPENAL_FOUND AND NOT PC_OPENAL_FOUND AND NOT PC_OPENAL_STATIC_FOUND)
262+
MESSAGE(FATAL_ERROR "Cannot find the OpenAL library.")
263+
ENDIF ()
264+
265+
IF (HINT_ALUT_FOUND)
266+
INCLUDE_DIRECTORIES(${HINT_ALUT_INCLUDE_DIR})
267+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${HINT_ALUT_LIBRARY})
268+
IF (CMAKE_WITH_DEBUG)
269+
MESSAGE(STATUS "alut found by HINT mode.")
270+
ENDIF ()
271+
ENDIF ()
272+
IF (NOT HINT_ALUT_FOUND AND PKGCONFIG_FOUND)
273+
PKG_SEARCH_MODULE(PC_ALUT alut alut32 Alut freealut)
274+
IF ((BUILD_WITH_STATIC STREQUAL "ON") AND PC_ALUT_STATIC_FOUND)
275+
INCLUDE_DIRECTORIES(${PC_ALUT_STATIC_INCLUDE_DIRS})
276+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_ALUT_STATIC_LIBRARIES})
277+
IF (CMAKE_WITH_DEBUG)
278+
MESSAGE(STATUS "alut found by PC-STATIC mode.")
279+
ENDIF ()
280+
ELSEIF (PC_ALUT_FOUND)
281+
INCLUDE_DIRECTORIES(${PC_ALUT_INCLUDE_DIRS})
282+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${PC_ALUT_LIBRARIES})
283+
IF (CMAKE_WITH_DEBUG)
284+
MESSAGE(STATUS "alut found by PC mode.")
285+
ENDIF ()
286+
ENDIF ()
287+
ENDIF ()
288+
IF (NOT HINT_ALUT_FOUND AND NOT PC_ALUT_FOUND)
289+
FIND_PACKAGE(ALUT)
290+
IF (ALUT_FOUND)
291+
INCLUDE_DIRECTORIES(${ALUT_INCLUDE_DIR})
292+
TARGET_LINK_LIBRARIES(${COLLISION_EXE_NAME} ${ALUT_LIBRARY})
293+
IF (CMAKE_WITH_DEBUG)
294+
MESSAGE(STATUS "alut found by CMAKE mode.")
295+
ENDIF ()
296+
ENDIF ()
297+
ENDIF ()
298+
IF (NOT HINT_ALUT_FOUND AND NOT ALUT_FOUND AND NOT PC_ALUT_FOUND AND NOT PC_ALUT_STATIC_FOUND)
299+
MESSAGE(FATAL_ERROR "Cannot find the alut library.")
300+
ENDIF ()
42301

43302
# Add flags for the target
44303

45-
IF (WIN32)
304+
IF (BUILD_WITH_STATIC)
46305
SET_TARGET_PROPERTIES(${COLLISION_EXE_NAME} PROPERTIES LINK_FLAGS -static)
47-
ELSEIF (UNIX)
306+
ENDIF ()
48307

49-
ENDIF()
308+
SET_TARGET_PROPERTIES(${COLLISION_EXE_NAME} PROPERTIES COMPILE_FLAGES -O2)
309+
310+
IF (BUILD_WITH_DEBUG)
311+
SET_TARGET_PROPERTIES(${COLLISION_EXE_NAME} PROPERTIES COMPILE_FLAGES -g)
312+
ENDIF ()
50313

51314
# Do miscellaneous things for the target
52315

53-
SET(COLLISION_DEFS -DRELEASE)
54-
ADD_DEFINITIONS(${COLLISION_DEFS})
316+
IF (BUILD_WITH_DEBUG)
317+
ADD_DEFINITIONS(-DDEBUG)
318+
ELSE ()
319+
ADD_DEFINITIONS(-DRELEASE)
320+
ENDIF ()

Collision/Readme.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ modeling, rendering and collision detection.
88

99
## Changelog and Note
1010

11+
* lzh @ 2016.12.21.18.11
12+
1. Update CMakeLists.txt.
13+
1114
* lzh @ 2016.12.20.23.40
1215
1. Use Chinese traditional magic arts to control energy.
1316

0 commit comments

Comments
 (0)