-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
228 lines (199 loc) · 7.14 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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
cmake_minimum_required(VERSION 2.8)
PROJECT( Bak3d )
set(VERSION "1.3.3")
set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
set(USE_GLUT OFF CACHE BOOL "For PC only : on if you want to use GLUT instead of Windows")
set(USE_ANTTWEAKBAR ON CACHE BOOL "AntTweakBar UI")
set(USECURVES ON CACHE BOOL "If we want to use Maya curves")
set(USE_SVCSPACEMOUSE ON CACHE BOOL "PC only: 3DConnexion space mouse")
if(WIN32)
SET( USE_NSIGHT OFF CACHE BOOL "Use NSight" )
SET( MEMORY_LEAKS_CHECK OFF CACHE BOOL "Build the project for Memory leaks check" )
endif(WIN32)
mark_as_advanced(CLEAR ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
#set (ZLIB_LIBRARY "" CACHE PATH "zlib dir")
#set (ZLIB_INCLUDE_DIR "" CACHE PATH "zlib dir")
# Specify the list of directories to search for cmake modules.
set(CMAKE_MODULE_PATH
${CMAKE_CURRENT_SOURCE_DIR}/cmake
)
set(PUBLIC_HEADERS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/inc )
set(PUBLIC_HELPERS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/inc_helpers )
file(GLOB PUBLIC_HEADERS "." "${PUBLIC_HEADERS_DIR}/*.[hi]*")
set( CMAKE_FIND_ROOT_PATH "")
if( CMAKE_SIZEOF_VOID_P EQUAL 8 )
set (ARCH "x64" CACHE STRING "CPU Architecture")
#set( ZLIB_ROOT "$ENV{ProgramFiles}") # strange... still returning x86 folder... grrr
# I add ZLIB_ROOT because findZLIB uses $ENV{ProgramFiles} and fails, too
set( ZLIB_ROOT "C:\\Program Files\\zlib")
else ()
set (ARCH "x86" CACHE STRING "CPU Architecture")
# I add ZLIB_ROOT because findZLIB uses $ENV{ProgramFiles} and fails, too
set( ZLIB_ROOT "$ENV{ProgramFiles}/zlib")
endif()
set(LIBRARY_OUTPUT_PATH
${PROJECT_BINARY_DIR}/lib
CACHE PATH
"Directory where libraries will be stored"
)
set(EXECUTABLE_OUTPUT_PATH
${PROJECT_BINARY_DIR}/bin
CACHE PATH
"Directory where executables will be stored"
)
#####################################################################################
# Shared folder
set(SHARED_DIR "${PROJECT_SOURCE_DIR}/shared")
#####################################################################################
# Keep track of math files
#
#find_path(NV_MATH_DIR nv_math.h "${SHARED_DIR}/nv_math")
set(NV_MATH_DIR "${SHARED_DIR}/nv_math")
set(NV_MATH_HEADERS "${NV_MATH_DIR}/nv_math.h" "${NV_MATH_DIR}/nv_algebra.h" "${NV_MATH_DIR}/nv_mathdecl.h")
set(NV_MATH_SOURCE "${NV_MATH_DIR}/nv_math.cpp")
#####################################################################################
# Keep track of shared curve files
if(USECURVES)
set(CV_DIR "${SHARED_DIR}/MayaCurve")
set(CV_HEADERS "${CV_DIR}/curveEngine.h" "${CV_DIR}/curveReader.h")
set(CV_SOURCES "${CV_DIR}/curveEngine.cpp" "${CV_DIR}/curveReader.cpp")
else()
add_definitions(-DNOCURVES)
endif()
#####################################################################################
# NSIGHT
#
if(USE_NSIGHT)
add_definitions(-DUSE_NSIGHT)
include_directories(NSight)
if( ARCH STREQUAL "x64" )
set(NSIGHT_LIB "${PROJECT_SOURCE_DIR}/NSight/nvToolsExt64_1.lib")
set(NSIGHT_DLL "${PROJECT_SOURCE_DIR}/NSight/nvToolsExt64_1.dll")
else()
set(NSIGHT_LIB "${PROJECT_SOURCE_DIR}/NSight/nvToolsExt32_1.lib")
set(NSIGHT_DLL "${PROJECT_SOURCE_DIR}/NSight/nvToolsExt32_1.dll")
endif()
#MARK_AS_ADVANCED(NSIGHT_LIB)
else()
set(NSIGHT_LIB, "")
endif()
#####################################################################################
if(UNIX)
set(OS "linux")
add_definitions(-DLINUX)
else(UNIX)
if(APPLE)
else(APPLE)
if(WIN32)
set(OS "win")
add_definitions(-DNOMINMAX)
if(MEMORY_LEAKS_CHECK)
add_definitions(-DMEMORY_LEAKS_CHECK)
endif()
endif(WIN32)
endif(APPLE)
endif(UNIX)
# Macro for adding files close to the executable
macro(_copy_files_to_target target thefiles)
if(WIN32)
foreach (FFF ${thefiles} )
add_custom_command(
TARGET ${target} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${FFF}
$<TARGET_FILE_DIR:${target}>
VERBATIM
)
endforeach()
endif()
endmacro()
#####################################################################################
# ZLIB
#
if( ARCH STREQUAL "x64" )
#set( ZLIB_ROOT "$ENV{ProgramFiles}") # strange... still returning x86 folder... grrr
# I add ZLIB_ROOT because findZLIB uses $ENV{ProgramFiles} and fails, too
set( ZLIB_ROOT "C://Program Files//zlib")
else ()
# I add ZLIB_ROOT because findZLIB uses $ENV{ProgramFiles} and fails, too
set( ZLIB_ROOT "$ENV{ProgramFiles}/zlib")
endif()
find_package(ZLib)
if(NOT ZLIB_FOUND)
add_definitions(-DNOGZLIB)
message(WARNING "
ZLIB not found : the project will be created without the capability to read compressed models.
But you can still unzip the models themselves, before using them through the samples."
)
endif()
MARK_AS_ADVANCED(CLEAR ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
#####################################################################################
# ===============> Bullet
find_package(BulletPhysics)
# ===============> Python
find_package(Python)
# ===============> Maya
find_package(Maya)
# ===============> OpenGL
find_package(OpenGL)
# ===============> GLUT
if(USE_GLUT OR NOT WIN32)
mark_as_advanced(CLEAR GLUT_LIBRARIES)
find_package(GLUT)
if(NOT GLUT_FOUND)
if(WIN32)
message(STATUS "No GLUT. Falling back to regular Win32 Windows layout")
endif()
message(WARNING "Glut needed on this platform for samples. Try to set GLUT_LOCATION")
endif()
endif()
# ===============> GLEW
if (NOT APPLE)
find_package(GLEW REQUIRED)
if(NOT GLEW_FOUND)
message(WARNING "Try to set GLEW_LOCATION")
endif()
endif()
#####################################################################################
# Macro to download a file from a URL
#
macro(_download_file _URL _TARGET _FORCE)
if(${_FORCE} OR (NOT EXISTS ${_TARGET}))
Message(STATUS "downloading ${_URL} ==> ${_TARGET}")
file(DOWNLOAD ${_URL} ${_TARGET} SHOW_PROGRESS)
else()
Message(STATUS "model ${_TARGET} already loaded...")
endif()
endmacro()
#
# example: _download_files("${FILELIST}" "http://..." "${BASE_DIRECTORY}/shared_external/..." ${MODELS_DOWNLOAD_FORCE} )
#
macro(_download_files _FILELIST _URL _TARGET _FORCE )
foreach(_FILE ${_FILELIST})
if(${_FORCE} OR (NOT EXISTS "${_TARGET}/${_FILE}"))
Message(STATUS "downloading ${_URL}/${_FILE} ==> ${_TARGET}")
file(DOWNLOAD ${_URL}/${_FILE} ${_TARGET}/${_FILE} SHOW_PROGRESS)
else()
Message(STATUS "model ${_FILE} already loaded...")
endif()
endforeach(_FILE)
endmacro()
# ===============>
add_subdirectory(bk3dinfo)
add_subdirectory(bk3dlib)
add_subdirectory(bk3dutil)
add_subdirectory(examples)
if(PYTHON_FOUND)
add_subdirectory(PyBk3d)
endif(PYTHON_FOUND)
if(MAYA_FOUND)
add_subdirectory(bk3dExport)
endif(MAYA_FOUND)
##################################################################
# INSTALL
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
install(FILES ${PUBLIC_HEADERS} DESTINATION "${INSTALL_INC_DIR}")
install(FILES ${PUBLIC_HEADERS} DESTINATION "${INSTALL_INC_DIR}")
endif()