Skip to content

Commit 81fde95

Browse files
author
homann
committedJan 28, 2007
CMake files for 0.8 for easier debugging. Only tested on Linux so far.
Does NOT create the same libraries as Makefiles. Normal Makefiles not affected. git-svn-id: http://svn.osgeo.org/qgis/branches/Release-0_8_0@6470 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 43a2e41 commit 81fde95

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+2510
-0
lines changed
 

‎CMakeLists.txt

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
2+
PROJECT(qgis)
3+
4+
# TODO:
5+
# - install includes for libs
6+
# - nice output when configured
7+
# - rename *.ui files to have the same filename as their implementation
8+
# e.g. instead of blahblahbase.ui use blahblah.ui
9+
# because it's more common in Qt4
10+
11+
#############################################################
12+
# CMake settings
13+
14+
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.3)
15+
16+
SET(CMAKE_COLOR_MAKEFILE ON)
17+
18+
# set path to additional CMake modules
19+
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
20+
21+
# it's possible to set PLUGINS_ALSO_BINARIES to TRUE
22+
# then some plugins that can run as standalone apps will be built
23+
# also as standalone apps
24+
SET (PLUGINS_ALSO_BINARIES FALSE)
25+
26+
27+
# try to configure and build GRASS plugin by default
28+
SET (WITH_GRASS TRE CACHE BOOL "Determines whether GRASS plugin should be built")
29+
SET (GRASS_PREFIX "" CACHE PATH "Path to GRASS base directory")
30+
31+
# try to configure and build python bindings by default
32+
SET (WITH_BINDINGS TRUE CACHE BOOL "Determines whether python bindings should be built")
33+
34+
35+
#############################################################
36+
# check if lexer and parser are not missing
37+
# http://www.mail-archive.com/cmake@cmake.org/msg02861.html
38+
39+
INCLUDE(Flex)
40+
41+
FIND_FLEX()
42+
43+
IF (NOT FLEX_EXECUTABLE)
44+
MESSAGE(FATAL_ERROR "Couldn't find Flex")
45+
ENDIF (NOT FLEX_EXECUTABLE)
46+
47+
INCLUDE(Bison)
48+
49+
FIND_BISON()
50+
51+
IF (NOT BISON_EXECUTABLE)
52+
MESSAGE(FATAL_ERROR "Couldn't find Bison")
53+
ENDIF (NOT BISON_EXECUTABLE)
54+
55+
#############################################################
56+
# search for dependencies
57+
58+
# required
59+
FIND_PACKAGE(Proj)
60+
FIND_PACKAGE(Sqlite3)
61+
FIND_PACKAGE(GEOS)
62+
FIND_PACKAGE(GDAL)
63+
64+
# optional
65+
FIND_PACKAGE(Postgres) # PostgreSQL provider, SPIT plugin
66+
FIND_PACKAGE(Expat) # GPS importer plugin
67+
FIND_PACKAGE(GSL) # Georeferencer
68+
FIND_PACKAGE(GRASS) # GRASS plugin
69+
70+
# python support:
71+
# - mapserver export tool
72+
# - bindings
73+
INCLUDE (Python) # file cmake/Python.cmake
74+
75+
76+
IF (NOT PROJ_FOUND OR NOT SQLITE3_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND)
77+
MESSAGE (SEND_ERROR "Some dependencies were not found!")
78+
ENDIF (NOT PROJ_FOUND OR NOT SQLITE3_FOUND OR NOT GEOS_FOUND OR NOT GDAL_FOUND)
79+
80+
IF (POSTGRES_FOUND)
81+
# following variable is used in qgsconfig.h
82+
SET (HAVE_POSTGRESQL TRUE)
83+
ENDIF (POSTGRES_FOUND)
84+
85+
86+
#############################################################
87+
# search for Qt4
88+
89+
SET( QT_USE_QT3SUPPORT TRUE )
90+
SET( QT_USE_QTXML TRUE )
91+
SET( QT_USE_QTNETWORK TRUE )
92+
SET( QT_USE_QTSVG TRUE )
93+
# TODO: should not be needed, report it to CMake devs
94+
IF (APPLE AND QT_USE_QT3SUPPORT)
95+
SET( QT_USE_QTSQL TRUE )
96+
ENDIF (APPLE AND QT_USE_QT3SUPPORT)
97+
98+
FIND_PACKAGE(Qt4 REQUIRED)
99+
100+
INCLUDE( ${QT_USE_FILE} )
101+
102+
FIND_PROGRAM(QT_LRELEASE_EXECUTABLE
103+
NAMES lrelease
104+
PATHS ${QT_BINARY_DIR}
105+
NO_DEFAULT_PATH
106+
)
107+
108+
#############################################################
109+
# enable warnings
110+
111+
ADD_DEFINITIONS( -Wall )
112+
113+
IF (CMAKE_BUILD_TYPE MATCHES Debug)
114+
ADD_DEFINITIONS(-DQGISDEBUG=1)
115+
ENDIF (CMAKE_BUILD_TYPE MATCHES Debug)
116+
117+
#############################################################
118+
# platform specific stuff
119+
120+
IF (WIN32)
121+
122+
SET (QGIS_BIN_DIR ${CMAKE_INSTALL_PREFIX})
123+
SET (QGIS_DATA_DIR ${CMAKE_INSTALL_PREFIX})
124+
SET (QGIS_PLUGIN_DIR ${CMAKE_INSTALL_PREFIX}/plugins)
125+
126+
ELSE (WIN32)
127+
128+
IF (APPLE)
129+
# for Mac OS X, everything is put inside an application bundle
130+
SET (CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}.app/Contents/MacOS)
131+
# path for library references
132+
SET (CMAKE_INSTALL_NAME_DIR @executable_path/lib)
133+
ENDIF (APPLE)
134+
135+
# common for MAC and UNIX
136+
SET (QGIS_BIN_DIR ${CMAKE_INSTALL_PREFIX}/bin)
137+
SET (QGIS_DATA_DIR ${CMAKE_INSTALL_PREFIX}/share/qgis)
138+
SET (QGIS_PLUGIN_DIR ${CMAKE_INSTALL_PREFIX}/lib/qgis)
139+
140+
IF (UNIX AND NOT APPLE)
141+
ADD_DEFINITIONS(-DPREFIX=\\"${CMAKE_INSTALL_PREFIX}\\")
142+
ADD_DEFINITIONS(-DPLUGINPATH=\\"${QGIS_PLUGIN_DIR}\\")
143+
ADD_DEFINITIONS(-DPKGDATAPATH=\\"${QGIS_DATA_DIR}\\")
144+
ENDIF (UNIX AND NOT APPLE)
145+
146+
ENDIF (WIN32)
147+
148+
149+
IF (WIN32)
150+
# expect that classes are being imported
151+
# Note: MSVC doesn't like when the macros are quotes
152+
# and MSYS doesn't like them unqouted (bacause of braces)
153+
IF (MSVC)
154+
ADD_DEFINITIONS("-DCORE_EXPORT=__declspec(dllimport)")
155+
ADD_DEFINITIONS("-DGUI_EXPORT=__declspec(dllimport)")
156+
ELSE (MSVC)
157+
ADD_DEFINITIONS("\"-DCORE_EXPORT=__declspec(dllimport)\"")
158+
ADD_DEFINITIONS("\"-DGUI_EXPORT=__declspec(dllimport)\"")
159+
ENDIF (MSVC)
160+
ELSE (WIN32)
161+
# other compilers don't use that MSVC construct
162+
ADD_DEFINITIONS(-DCORE_EXPORT=)
163+
ADD_DEFINITIONS(-DGUI_EXPORT=)
164+
ENDIF (WIN32)
165+
166+
167+
#############################################################
168+
# create qgsconfig.h
169+
170+
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/qgsconfig.h.in_cmake ${CMAKE_SOURCE_DIR}/qgsconfig.h)
171+
172+
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
173+
174+
#############################################################
175+
# create qgssvnversion.h
176+
177+
# this is useful variable for developers
178+
SET (QGIS_NO_SVNVERSION FALSE CACHE BOOL "Set to true if you don't want qgssvnversion.h to be regenerated every make")
179+
180+
IF (QGIS_NO_SVNVERSION)
181+
182+
ADD_CUSTOM_TARGET(svnversion
183+
echo '\#define QGSSVNVERSION \"\"' > qgssvnversion.h
184+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
185+
186+
ELSE (QGIS_NO_SVNVERSION)
187+
188+
IF (WIN32)
189+
# TODO: create qgssvnversion.h properly
190+
ADD_CUSTOM_TARGET(svnversion echo "#define QGSSVNVERSION \"svn\"" > qgssvnversion.h
191+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
192+
ELSE (WIN32)
193+
ADD_CUSTOM_TARGET(svnversion ALL
194+
QGSSVNDEF='\#define QGSSVNVERSION \"'`svnversion .`'\"' &&
195+
if [ \"`grep QGSSVNVERSION qgssvnversion.h 2>/dev/null`\" != \"$$QGSSVNDEF\" ]; then
196+
echo $$QGSSVNDEF > qgssvnversion.h \; fi
197+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
198+
)
199+
200+
ENDIF (WIN32)
201+
202+
ENDIF (QGIS_NO_SVNVERSION)
203+
204+
#############################################################
205+
# process subdirs
206+
207+
SUBDIRS(src doc images resources i18n tools)
208+
209+
210+
211+
#############################################################
212+
# install stuff
213+
214+
INSTALL (FILES AUTHORS SPONSORS
215+
DESTINATION ${QGIS_DATA_DIR}/doc)
216+
217+
# manual page... install also on windows?
218+
INSTALL (FILES qgis.man
219+
DESTINATION ${CMAKE_INSTALL_PREFIX}/man/man1)

‎cmake/Bison.cmake

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# use bison for .yy files
2+
3+
# search for bison
4+
MACRO(FIND_BISON)
5+
IF(NOT BISON_EXECUTABLE)
6+
FIND_PROGRAM(BISON_EXECUTABLE bison)
7+
IF (NOT BISON_EXECUTABLE)
8+
MESSAGE(FATAL_ERROR "Bison not found - aborting")
9+
ENDIF (NOT BISON_EXECUTABLE)
10+
ENDIF(NOT BISON_EXECUTABLE)
11+
ENDMACRO(FIND_BISON)
12+
13+
MACRO(ADD_BISON_FILES _sources )
14+
FIND_BISON()
15+
16+
FOREACH (_current_FILE ${ARGN})
17+
GET_FILENAME_COMPONENT(_in ${_current_FILE} ABSOLUTE)
18+
GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE)
19+
20+
SET(_out ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
21+
SET(_out_h ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
22+
SET(_out_hpp ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.hpp)
23+
24+
25+
# bison options:
26+
# -t add debugging facilities
27+
# -d produce additional header file (used in parser.l)
28+
# -v produce additional *.output file with parser states
29+
30+
ADD_CUSTOM_COMMAND(
31+
OUTPUT ${_out}
32+
COMMAND ${BISON_EXECUTABLE}
33+
ARGS
34+
-o${_out} -d -v -t
35+
${_in}
36+
DEPENDS ${_in}
37+
)
38+
ADD_CUSTOM_COMMAND(
39+
OUTPUT ${_out_h}
40+
COMMAND mv
41+
ARGS
42+
${_out_hpp} ${_out_h}
43+
DEPENDS ${_out}
44+
)
45+
46+
47+
SET(${_sources} ${${_sources}} ${_out} ${_out_h} )
48+
ENDFOREACH (_current_FILE)
49+
ENDMACRO(ADD_BISON_FILES)

0 commit comments

Comments
 (0)
Please sign in to comment.