PBA-cbs bootstrapping of portable C++ project

Version 8.1 by christoph_lechleitner@iteg_at on 2012-07-22 02.17:53

Setting up a portable C++ project still is a pain in the ass, especially if it shall be portable.

When trying to automate it in some way, we came to the conclusion that a full example in a public subversion repository is a good solutions because it's easy to use for you and easy to maintain for us.

HowTo ...

These are the steps for an ultra fast bootstrapping of a portable project relying on pba-cbs and our incarnation of the MinGW cross compilation toolchain.

Preparations

You need deb sources for pba (any-pba-1.0) and distro-mingw-5 (i.e. squeeze-mingw-5 or wheezy-mingw-5), see https://deb.clazzes.org.

For starters, You need to install the packages pba-cbs and subversion.

Retrieve the sceleton

Decide for the main name of your app:

MYAPPNAME="myapp"

Export our example from public svn:

svn export "https://svn.clazzes.org/svn/pba/trunk/pba-helloworld-portable" $MYAPPNAME
Rename and search'n'replace

Rename some stuff and have the inlcude files adapted:

cd $MYAPPNAME
 
scripts/rename_main_files.sh $MYAPPNAME
 
rm scripts/rename_main_files.sh
Adapt debian information

Change my name and e-mail to yours and adapt the description:

$EDITOR debian*/control debian*/changelog
Optional: Adapt the Windows rc template ...

If you want windows binaries, edit the resoure template:

$EDITOR src/*.rc

Do not forget to change the icon, too!

Alternatively: Remove windows stuff

If you do not want windows binaries, remove it:

 

rm -rf src/include-mingw.mk src/*.rc debian-mingw* build/win*
Optional: Activate svn or another revision control system

Now (and before any build activity) is a very good time to put your project under subversion control:

svn add `pwd`

You might also want to fill svn:ignore properties of some directories:

scripts/set_svn_ignore.sh
Optional: Install required libs and build the package

To produce the debian packages, just:

# this needs sudo privileges
pba-builddeps -i
 
pba-build -u

# or dpkg-build*

To only build the linux packages or only the windows packages, add -o unix resp. -o mingw to the pba-commands.

Optional: Create Windows Installers

First, edit the .nsi script template and replace all instances of "Clazzes.org" with something of your choice:

$EDITOR src/*.nsi

Then "make" the nsis directory:

make -C nsis && ls -ltr nsis/*.exe
Finally update the ReadMe

At least remove the link to this page:

$EDITOR doc/ReadMe.txt