-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
114 lines (98 loc) · 4.19 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
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) # Or does this work on 2.4? 2008-05-15, oyshole
SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) # Avoid unneccesary code
PROJECT(Quarter)
SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/SIMCMakeMacros/Modules/")
# This is a convenience macro for generating better tree structures in VS solutions.
# Running this in any directory will affect all libraries/executables at that location.
MACRO(SIM_VS_GENERATE_BASIC_TREE)
SOURCE_GROUP("Source" REGULAR_EXPRESSION \\.cpp)
SOURCE_GROUP("Headers" REGULAR_EXPRESSION \\.h)
SOURCE_GROUP("Source\\Generated Moc files" REGULAR_EXPRESSION moc_*)
SOURCE_GROUP("Source\\Generated Qrc files" REGULAR_EXPRESSION [^\\.]qrc_*)
SOURCE_GROUP("Resources" REGULAR_EXPRESSION .*\\.qrc)
SOURCE_GROUP("Build" REGULAR_EXPRESSION \\.txt)
SOURCE_GROUP("Build\\Rules" REGULAR_EXPRESSION \\.rule)
ENDMACRO()
# Add an option to enable static builds
OPTION(Quarter_BUILD_STATIC_LIBRARY "Build static library instead of shared library (DLL, so etc..)" OFF)
OPTION(Quarter_BUILD_PLUGIN "Build Quarter plugin for QT Designer" OFF)
OPTION(Quarter_BUILD_EXAMPLES "Build Quarter example applications" OFF)
# Set up the different flavors of postfixes and CRTs for Windows environments
# Install configuration
#
# Quarter will be installed into the directory configured by CMAKE_INSTALL_PREFIX. This
# defaults to /usr/local/ on UNIX and c:/Program Files/Quarter on Windows.
#
# On Windows, the namimg convention is as follows (ripped from the "Coin" way of doing stuff):
# Dynamic Release: Quarter.dll and Quarter.lib
# Dynamic Debug: Quarterd.dll and Quarterd.lib
# Static Release: Quarters.lib
# Static Debug: Quartersd.lib
IF(WIN32)
IF(Quarter_BUILD_STATIC_LIBRARY)
SET(CMAKE_DEBUG_POSTFIX "sd")
SET(CMAKE_RELEASE_POSTFIX "s") #NB! Undocumented variable, could be deprecated
#Don't use dynamic runtime in static builds.
SET(CMAKE_CXX_FLAGS_RELEASE "/MT")
SET(CMAKE_CXX_FLAGS_DEBUG "/MTd")
ELSE()
SET(CMAKE_DEBUG_POSTFIX "d")
ENDIF()
# Enable single project multithread compilation for VS2008
IF(MSVC_VERSION EQUAL 1500)
SET(CMAKE_CXX_FLAGS "/MP4")
ENDIF()
ENDIF()
FIND_PACKAGE(OpenGL REQUIRED)
FIND_PACKAGE(Coin REQUIRED) # FIXME: The results of this macro is not cached.
SET(QT_USE_QTDESIGNER true)
SET(QT_USE_QTTEST true)
SET(QT_USE_QTOPENGL true)
SET(QT_USE_QTUITOOLS true)
FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})
# FIXME: Is this really necessary? Shouldnt the link directories be sorted out by the package scripts.
# 2008-05-15, oyshole
LINK_DIRECTORIES(${QT_LIB_DIR} ${Coin_LIB_DIR} ${OPENGL_gl_DIRECTORY})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include/)
INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR} ${Coin_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
ADD_DEFINITIONS(${Coin_DEFINES})
ADD_DEFINITIONS(${QT_DEFINITIONS})
IF(MSVC)
MESSAGE(STATUS "MSVC Version: " ${MSVC_VERSION})
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE)
ENDIF()
# What to build
ADD_SUBDIRECTORY(src)
#Install the public headers
INSTALL(DIRECTORY include/Quarter/ DESTINATION include/Quarter
FILES_MATCHING PATTERN "*.h"
PATTERN ".svn" EXCLUDE)
#Drop this for now
FIND_PACKAGE(Subversion)
IF(Subversion_FOUND)
Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project)
SET(Quarter_REVISION ${Project_WC_REVISION})
ELSE()
SET(Quarter_REVISION "0")
ENDIF()
# Experimental support for CPack.
# Tested with NSIS on Windows Vista.
# 2008-05-15
# Packaging options
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Quarter")
SET(CPACK_PACKAGE_VENDOR "Kongsberg SIM")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/README")
SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "Quarter")
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "Quarter")
#Add a registry variable for detecting the link type on Win32 systems.
IF(Quarter_BUILD_STATIC_LIBRARY)
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "\ \ WriteRegStr\ SHCTX\ \\\"Software\\\\Kongsberg SIM\\\\Quarter\\\" \\\"Dynamic\\\" \\\"false\\\"")
ELSE()
SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "\ \ WriteRegStr\ SHCTX\ \\\"Software\\\\Kongsberg SIM\\\\Quarter\\\" \\\"Dynamic\\\" \\\"true\\\"")
ENDIF()
SET(CPACK_PACKAGE_VERSION_MAJOR "1")
SET(CPACK_PACKAGE_VERSION_MINOR "0")
SET(CPACK_PACKAGE_VERSION_PATCH "0")
SET(CPACK_NSIS_MODIFY_PATH on)
INCLUDE(CPack)