Compiling AngEdit

AngEdit has only been test compiled with VC++ to date but is intended to be able to be compiled for more ports and with different compiler utilities. Detailed instructions for compiling follow.

Directory layout

The following directory tree is used for distribution of the project and source code.

---- AngEdit ----+---- lib ----+---- edit 
     (Base       |  (external   (text data and
   directory)    | data files)     database)
                 |
                 +---- src ----+---- AngEdit
                  (Source code)  (VC++ project
                               (not distributed))

The base directory is where the .exe file goes, the VC++ project directory contains VC++ project files, library files and other files that are required to compile but not distributed. VC++ likes to stuff the source code in there as well, but I prefer them separate.

Required toolkits / libraries

AngEdit uses SQLite for database functions. SQLite is public domain and can be distributed (slightly altered) directly with the source code. Files required are sqlite3.c, sqlite3.h and sqlite3ext.h (the last is not actually used yet). You don't need to do anything special to install SQLite, it's just part of the source code.

AngEdit uses FLTK for the GUI display and interface. Those wanting to compile the project should download and install FLTK separately. I used the 1.3.x snapshot, you need to install that not the 1.1.9 (last stable version) or the 2.0.x snapshot.

fl_table is a FLTK widget that needs to be installed separately.

Installing FLTK.

(See the documentation for further detail)

Unzip the files in a suitable location (e.g. c:\programming). Open "fltk.dsw". Say "Yes to all" to convert the project to VC++ 9 (VS 2008) from 5.0. Build solution. Make a cup of coffee, or walk the dog (it takes a while). This produces all the .dll files that you will need to access from the AngEdit project.

Installing fl_table

Download and unzip the files. Put the Fl_Table-3.13 directory in the VC++ project directory

---- AngEdit ----+---- lib ----+---- edit 
     (Base       |  (external   (text data and
   directory)    | data files)     database)
                 |
                 +---- src ----+---- AngEdit ----+---- Fl_Table-3.13
                  (Source code)  (VC++ project        (fl_table FLTK
                               (not distributed))         widget)

Add the two files Fl_Table.cxx and Fl_Table_Row.cxx to your VC++ project (add existing files).

VC++ project property settings

Create new project and choose "Empty Project".

  • Properties -> Configuration -> General -> Output directory "..\..\"

(Otherwise the .exe would be in the same directory as the project files)

  • Properties -> Configuration -> General -> Character Set "Use Unicode Character Set"
  • Properties -> C/C++ -> General -> Additional Include directories "..\;C:\programming\fltk;./Fl_Table-3.13"
  • Properties -> C/C++ -> General -> Warning level "W4" (optional)

(If they were installed in the locations given above)

  • Properties -> C/C++ -> Preprocessor -> Preprocessor definitions "WIN32"

(Equivalent of /DWIN32)

  • Properties -> C/C++ -> Advanced -> Disable specific warnings "4127"

(This disables the "conditional expression is constant" which we very rarely need to be warned about)

  • Properties -> Linker -> General -> Additional Library directories "C:\programming\fltk\lib"

(If it is installed in the location given above)

  • Properties -> Linker -> Input -> Additional dependencies "fltkd.lib comctl32.lib WS2_32.LIB"

AngEdit should now be ready to compile

Don't forget that Build -> Configuration manager should be set to "Release" if you want to distribute the .exe file.