ApCoCoA-1:HowTo:Compile ApCoCoALib on Windows
Based on the discussion on 22.11.2007 with Michael this page will contain a brief description on how to compile the ApCoCoALib under Windows.
Note: The compilation as described below will fail on the current repository version. The description only presents the general approach which will be made available with the next releases.
What is needed
In order to compile the ApCoCoALib on Windows several programs need to be installed prior compilation. The installation and reference of those programs will not described on this site. We refer to the official websites instead.
To get the latest releases we recommend to use mercurial as your repository client. In case you do not want to contribute to the project the current version can also be downloaded here.
Install Cygwin with the following components activated:
- devel: mercurial
- devel: python-brlapi
- util: patch
- editors: nano (or any other editor - optional)
Version 2003/2005 (for MatlabToolbox MSVC2005 is needed)
If you downloaded the source code from the repository website you can skip the next section "How to get source code from a repository". In case you use mercurial read the follwoing section.
Needed are the following repositories:
- CoCoALib (e.g. CoCoALib-0.99)
- ApCoCoALib (e.g. ApCoCoALib-devel)
- MatlabToolbox (in case you need the MatlabToolbox-Interface)
How to get the source code from a repository
Open a cygwin command window and create a path you want to store your repositories to. Mercurial is operated by the hg command.
Check out: clone
To create a copy of your repository on your machine use the hg clone RepoLink command. RepoLink stands for the repository url. You can find the repository url as the link on the repositories index site. E.g. the url to the ApCoCoALib-devel repository is http://www.apcocoa.org/hg/ApCoCoALib-devel/
This command will create a subfolder on your computer and load all files from the selected repository.
This command needs to be run only once. To update the repository the command hg.pull is used.
The clone command also created a subdirectory called .hg which contains all the relevant information for mercurial to update the repository.
Before updating ensure that cygwin's current directory is the repository directory you want to update. The command hg pull will then update your local repository copy. To view the changes use the command hg log or for the last changes hg log | less.
In case you are contributing to the ApCoCoALib you might want to apply patches before they have been pushed to the repository for download. To apply a mercurial patch use the command hg import name.patch where name stands for the filename of the patch. Note that it is assumed that you copied the patch into your local repository folder. Otherwise name needs to be the path to your patch-file location.
To submit a change in the source code two steps have to be taken: committing the change and export as patch. Publish the patch in the forum and ask the admins to push your patch to the repsoitory (for more details see next section: Patches: export).
Before making changes it is highly recommended to create a copy of your repository clone as your working set in which changes are being made. Thus it is easier to keep track of different development trees while having a latest repository clone in your prefered hg pull folder.
The changes you have made can be shown by using the command hg status (names the files which have been changed) and the command hg diff (displays the lines which have been changed).
To make a change use the command hg commit. This will open the editor (e.g. nano) asking for a description. Alternatively use the command hg commit -m "Your description" Where "Your description" stands for a brief description of the changes being made in this commit.
Again use the command hg log | less to see the last change. There will also be a changeset number displayed e.g. 121:xxx where xxx stands for a hashcode.
To export the patch and ask for pushing (by attaching it to your forum request) get the changeset hashcode (hg log | less). Then use the command hg export xxx > patchname.patch where xxx stands for the hashcode and patchname for a patchname. Ensure that the patchname contains no blanks and is a short description. See the forum for examples of patch names.