Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master

This branch is 1569 commits behind zeromq:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

..
Failed to load latest commit information.
Makefile.am
README.txt
build-android.gsl
build-autoconf.gsl
build-cmake.gsl
build-mingw32.gsl
build-vcproj.gsl
build-vcxproj.gsl
build-vcxproj12.gsl
chkopts.pl
generate
project.gsl
project.xml
sockopts.gsl
sockopts.xml

README.txt

# Project files

Since 15 October 2013, we generate the project files automatically from a
single XML file that looks like this:

    <project name = "czmq">
        <header name = "czmq" />
        <header name = "czmq_prelude" />
        <class name = "zauth" />
        <class name = "zbeacon" />
        ...
        <class name = "ztree" />
    </project>

The goal was to reduce the effort to add new classes and ensure they're
properly built on all systems. The downside is that it makes it harder to
fix the project files for any given system. However, you can cheat...

## Option 0 - Adding a New Class

1. Add your new class to the src and include directories, edit czmq.h and
   czmq_selftest.c, and make a pull request.

2. Someone else will update the project files.

## Option 1 - Hacking the Project Files

1. Take any given project file, make whatever changes you need to, and
   send the changed project file as a pull request.

2. A maintainer will then take your changes and backport them to the code
   generation templates.

## Option 2 - Doing It Properly

1. Grab http://github.com/imatix/gsl, build this tool. It is the tool that
   we use to do the code generation itself. GSL takes XML models like our
   project file, and chucks them at templates written in its own scripting
   language.

3. To add a new class, edit projects.xml and then run ./generate.

2. To add a new platform, read the various build-xxx.gsl scripts in this
   directory. These are very simple GSL programs that vomit out makefiles
   and project files.

3. Then add a new script using one of the existing ones as inspiration, and
   a hand-written makefile/whatever as raw material.

4. Add your new script to projects.gsl. Test, and make a pull request with
   the results.

## Current Support

Currently we generate these project-related files:

    CMakeLists.txt...
    builds/android/Android.mk...
    builds/mingw32/Makefile.mingw32...
    builds/msvc/czmq.vcproj...
    builds/msvc/czmq.vcxproj...
    builds/msvc/czmq.vcxproj.filters...
    src/Makefile.am...
    doc/Makefile.am...

And also the socket options class zsockopts using the same approach.
Something went wrong with that request. Please try again.