add details for how to build rundemo.cpp standalone on windows with gyp

This commit is contained in:
Dane Springmeyer 2013-05-22 23:23:11 -07:00
parent 019873a9d2
commit 5239bef595
5 changed files with 161 additions and 21 deletions

View file

@ -1,4 +1,4 @@
CXXFLAGS = $(shell mapnik-config --cflags)
CXXFLAGS = $(shell mapnik-config --includes --defines --cxxflags --dep-includes)
LDFLAGS = $(shell mapnik-config --libs --dep-libs --ldflags)
OBJ = rundemo.o
@ -13,8 +13,15 @@ $(BIN) : $(OBJ)
.c.o :
$(CXX) -c $(CXXFLAGS) $<
gyp:
rm -rf ./build
gyp rundemo.gyp --depth=. -f make --generator-output=./build/
make -C ./build
build/out/Release/rundemo `mapnik-config --prefix`
.PHONY : clean
clean:
rm -f $(OBJ)
rm -f $(BIN)
rm -f ./build

70
demo/c++/README.md Normal file
View file

@ -0,0 +1,70 @@
## rundemo.cpp
This directory contains a simple c++ program demonstrating the Mapnik C++ API. It mimics the python 'rundemo.py' example with a couple exceptions.
If building on unix you can have this program automatically build by configuring Mapnik like:
./configure DEMO=True
However, this example code also should be able to be built standalone.
The following notes describe how to do that on various operating systems.
## Depends
- Mapnik library development headers
- `mapnik-config` on unix and `mapnik-config.bat` on windows
### Unix
On OS X and Linux you also need `make`.
### Windows
On windows, additional dependencies to build are:
- MSVS 2010 with C++ compiler
- Python 2.x
- gyp: https://code.google.com/p/gyp | https://github.com/springmeyer/hello-gyp
`mapnik-config.bat` should come with your Mapnik installation.
First confirm it is on your path:
mapnik-config # should give usage
To install gyp, which is pure python do:
svn checkout http://gyp.googlecode.com/svn/trunk/ gyp
cd gyp
sudo python setup.py install
## Building the demo
### Unix
Simply type:
make
Then to run do:
./rundemo `mapnik-config --prefix`
On OS X you can also create an xcode project:
gyp rundemo.gyp --depth=. -f xcode --generator-output=./build/
xcodebuild -project ./build/rundemo.xcodeproj
./build/out/Release/rundemo `mapnik-config --prefix`
### Windows
First you need to build he visual studio files with gyp:
gyp rundemo.gyp --depth=. -f msvs -G msvs_version=2010
Then you can compile the demo with `msbuild`:
msbuild build.sln

42
demo/c++/common.gypi Normal file
View file

@ -0,0 +1,42 @@
{
'variables': {
'conditions': [
['OS == "mac"', {
'target_arch%': 'x64'
}, {
'target_arch%': 'ia32'
}]
]
},
'target_defaults': {
'default_configuration': 'Release',
'defines': [ ],
'conditions': [
['OS == "mac"', {
'defines': [ 'DARWIN' ]
}, {
'defines': [ 'LINUX' ]
}],
['OS == "mac" and target_arch == "x64"', {
'xcode_settings': {
'ARCHS': [ 'x86_64' ]
},
}]
],
'configurations': {
'Debug': {
'cflags': [ '-g', '-O0' ],
'xcode_settings': {
'OTHER_CFLAGS': [ '-g', '-O0' ]
}
},
'Release': {
'cflags': [ '-O3' ],
'defines': [ 'NDEBUG' ],
'xcode_settings': {
'OTHER_CFLAGS': [ '-O3' ]
}
}
}
}
}

View file

@ -1,20 +0,0 @@
This directory contains a simple c++ program demonstrating the Mapnik C++ API. It mimics the python 'rundemo.py' example with a couple exceptions.
To build it re-configure SCons with DEMO=True then rebuild::
$ python scons/scons.py configure DEMO=True
$ python scons/scons.py
The sample program will be compiled (but not installed).
To run::
$ cd demo/c++
$ ./rundemo /usr/local/lib/mapnik
For more detailed comments have a look in demo/python/rundemo.py
Have fun!
Artem.

41
demo/c++/rundemo.gyp Normal file
View file

@ -0,0 +1,41 @@
{
'includes': [ 'common.gypi' ],
'include_dirs': [
'<!@(mapnik-config --includes)',
'<!@(mapnik-config --dep-includes)',
],
'defines': [
'<!@(mapnik-config --defines)',
],
'targets': [
{
'target_name': 'rundemo',
'type': 'executable',
'sources': [
'rundemo.cpp',
],
'conditions': [
[ 'OS=="mac"', {
'libraries': [
'-lmapnik',
'-undefined dynamic_lookup'
],
'xcode_settings': {
'OTHER_CPLUSPLUSFLAGS':[
'<!@(mapnik-config --cflags)'
],
'GCC_ENABLE_CPP_RTTI': 'YES',
'GCC_ENABLE_CPP_EXCEPTIONS': 'YES'
}
}],
[ 'OS=="win"', {
'msvs_settings': {
'AdditionalLibraryDirectories': [
'<!@(mapnik-config --ldflags)'
],
}
}]
]
}
],
}