Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
# 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.