-
Notifications
You must be signed in to change notification settings - Fork 69
/
Copy pathCMakeLists.txt
137 lines (110 loc) · 3.92 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
cmake_minimum_required(VERSION 2.6)
project(OpenSkyscraper)
# Executable name.
set(EXECUTABLE_NAME OpenSkyscraper)
# Additional definitions.
if (MSVC)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DBUILD_DEBUG")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /DBUILD_DEBUG")
add_definitions(-Dsnprintf=_snprintf)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
else()
# Default to debug build.
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build (Debug or Release)" FORCE)
endif()
if (CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions("-DBUILD_DEBUG")
else()
add_definitions("-DBUILD_RELEASE")
endif()
endif()
add_definitions("-Wno-switch")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DBUILD_DEBUG")
# Setup the version strings.
if (NOT VERSION)
set(VERSION "dev" CACHE STRING "Version string (e.g. 1.2alpha1 or dev)" FORCE)
endif()
set(YEAR "" CACHE STRING "Year of compilation" FORCE)
if (NOT YEAR)
if (UNIX)
execute_process(COMMAND date +%Y OUTPUT_VARIABLE YEAR OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
mark_as_advanced(YEAR)
endif()
set(MACOSX_BUNDLE_BUNDLE_NAME ${EXECUTABLE_NAME})
set(MACOSX_BUNDLE_COPYRIGHT "Copyright © 2011-${YEAR} by OpenSkyscraper Project")
set(MACOSX_BUNDLE_BUNDLE_VERSION ${VERSION})
# Gather the source files.
file(GLOB_RECURSE sources RELATIVE ${PROJECT_SOURCE_DIR} source/*.cpp)
# TinyXML2
include_directories(thirdparty/tinyxml2)
list(APPEND sources thirdparty/tinyxml2/tinyxml2.cpp)
### PLATFORM-SPECIFIC STUFF
### =======================
# Mac OS X
if (APPLE)
add_definitions("-DTARGET_APPLE")
# Find the paths of all resources.
file(GLOB_RECURSE resources RELATIVE ${PROJECT_SOURCE_DIR} data/*)
# Make sure the resources are copied to the right bundle.
foreach(r ${resources})
get_filename_component(r_abs ${r} ABSOLUTE)
get_filename_component(r_dir ${r_abs} PATH)
file(RELATIVE_PATH r_rel ${PROJECT_SOURCE_DIR}/data ${r_dir})
set_source_files_properties(${r} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${r_rel})
endforeach()
# Executable.
add_executable(
${EXECUTABLE_NAME} MACOSX_BUNDLE
${sources}
${resources}
)
# other systems
else ()
add_executable(
${EXECUTABLE_NAME}
${sources}
)
endif ()
### PACKAGES AND LIBRARIES
### ======================
# Tell CMake to also search the thirdparty directory for modules.
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/thirdparty" ${CMAKE_MODULE_PATH})
# Include AStar-Search headers
include_directories(thirdparty/astar-search/)
# SFML
if (WIN32)
set(SFMLDIR "" CACHE PATH "SFML directory")
endif ()
set(SFML_STATIC_LIBRARIES FALSE CACHE BOOL "Check if linking to SFML static libraries")
find_package(SFML REQUIRED audio graphics window system)
include_directories(${SFML_INCLUDE_DIR})
target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES})
# Copy the SFML frameworks into the application bundle on Mac OS X.
if (APPLE)
# install(DIRECTORY ${SFML_LIBRARIES} DESTINATION ${CMAKE_BINARY_DIR}/${EXECUTABLE_NAME}.app/Contents/Frameworks)
endif ()
# libRocket
find_package(Rocket REQUIRED core controls debugger)
string(REPLACE "optimized;${ROCKET_DEBUGGER_LIBRARY_RELEASE}" "" ROCKET_LIBRARIES "${ROCKET_LIBRARIES}")
include_directories(${ROCKET_INCLUDE_DIR})
target_link_libraries(${EXECUTABLE_NAME} ${ROCKET_LIBRARIES})
if (WIN32)
set(FREETYPE_DIR "" CACHE PATH "freetype directory")
set(ENV{FREETYPE_DIR} ${FREETYPE_DIR})
endif ()
find_package(Freetype REQUIRED)
target_link_libraries(${EXECUTABLE_NAME} ${FREETYPE_LIBRARIES})
# OpenGL (Needed by Rocket)
find_package(OpenGL REQUIRED)
target_link_libraries(${EXECUTABLE_NAME} ${OPENGL_gl_LIBRARY})
# libmspack for decompressing KWAJ files (SIMTOWER.EX_)
# http://www.cabextract.org.uk/libmspack/
find_package(mspack)
if (MSPACK_FOUND)
include_directories(${MSPACK_INCLUDE_DIRS})
link_directories(${MSPACK_LIBRARY_DIRS})
target_link_libraries(${EXECUTABLE_NAME} ${MSPACK_LIBRARIES})
add_definitions(-DMSPACK)
endif (MSPACK_FOUND)