Skip to content

Commit 81fde95

Browse files
author
homann
committed
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

+219
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

+49
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)

cmake/FindExpat.cmake

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
# CMake module to search for Expat library
3+
# (library for parsing XML files)
4+
#
5+
# If it's found it sets EXPAT_FOUND to TRUE
6+
# and following variables are set:
7+
# EXPAT_INCLUDE_DIR
8+
# EXPAT_LIBRARY
9+
10+
11+
FIND_PATH(EXPAT_INCLUDE_DIR expat.h /usr/local/include /usr/include c:/msys/local/include)
12+
13+
FIND_LIBRARY(EXPAT_LIBRARY NAMES expat PATH /usr/local/lib /usr/lib c:/msys/local/lib)
14+
15+
IF (EXPAT_INCLUDE_DIR AND EXPAT_LIBRARY)
16+
SET(EXPAT_FOUND TRUE)
17+
ENDIF (EXPAT_INCLUDE_DIR AND EXPAT_LIBRARY)
18+
19+
20+
IF (EXPAT_FOUND)
21+
22+
IF (NOT EXPAT_FIND_QUIETLY)
23+
MESSAGE(STATUS "Found Expat: ${EXPAT_LIBRARY}")
24+
ENDIF (NOT EXPAT_FIND_QUIETLY)
25+
26+
ELSE (EXPAT_FOUND)
27+
28+
IF (EXPAT_FIND_REQUIRED)
29+
MESSAGE(FATAL_ERROR "Could not find Expat")
30+
ELSE (EXPAT_FIND_REQUIRED)
31+
IF (NOT EXPAT_FIND_QUIETLY)
32+
MESSAGE(STATUS "Could not find Expat")
33+
ENDIF (NOT EXPAT_FIND_QUIETLY)
34+
ENDIF (EXPAT_FIND_REQUIRED)
35+
36+
ENDIF (EXPAT_FOUND)

0 commit comments

Comments
 (0)