ApCoCoA-1:HowTo:Compile ApCoCoALib on Windows

From ApCoCoAWiki

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 command line editor - optional)


Version 2003/2005 (for MatlabToolbox MSVC2005 is needed)

Source code

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.

Update: pull

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.

Patches: import

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.

Upload: commit

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.

Patches: export

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.

How to compile

The Lib's are compiled with the MSVC command nmake. To run this command open a MSVC command prompt and change to the repository folder you wish to compile.

Due to the dependencies the stated repositories have to be compiled in the order:

  1. CoCoALib
  2. ApCoCoALib
  3. MatlabToolbox

The compilation command is nmake -f Makefile.vc.

Note: Ensure using Makefile.vc and not Makefile.

This will display a list of possible compilation options. Among them are:

  • CoCoALib / ApCoCoALib - This will compile the corresponding Lib
  • tests - This will compile several tests
  • clean - This will remove the files created during the last compilation
  • ........

To compile one of these options type the command: nmake -f Makefile.vc option where option stands for one of the listed options

e.g. nmake -f Makefile.vc CoCoALib.

Setting pathes

This section will be described later. It is depending on the comming releases.