C/C++ Setup

The C Development Tools provide most of what you need to build C/C++ projects.  There are both a Managed Make C/C++ Project and a Standard Make C/C++ Project.  For EPICS development you want to use the Standard Make C/C++ Project.  This project type uses standard makefiles, which is the kind EPICS uses.  You have to provide the Make program and other tools needed for the build.  For EPICS builds you need Gnumake and Perl, and they need to be in your PATH.  On most UNIX systems these programs are already available.  On Windows you can use the Microsoft  compiler, linker, etc, but you still need Gnumake and Perl.  These can be obtained from Cygwin, along with other UNIX utilities that are needed or useful.

The C/C++ Development Tools function much better when Project | Build Automatically is turned off.  Unfortunately, Java Development Tools work better the other way.

The C/C++ editor has context assist, syntax highlighting, and other modern features.  It not nearly as full-featured as the JDT editors, however.  It currently does not have a good indentation facility.  You may want to use an external editor, such as Emacs, which you can add and configure via the Run | External Tools menu.

There is a C/C++ Perspective and a C/C++ Projects view that is similar to the Navigator view, but which has C/C++ oriented features.  It shows icons on the files for errors, warnings, etc., which is useful.  However, if you look at Properties for a project you only see C/C++ properties and perhaps a few others.  The EPICS IDE properties do not show.  They do show in the Navigator view.  In addition, the EPICS New Application Wizard, does not work in the C/C++ Projects view, except when invoked when a file is selected.  It is much easier to do builds in the C/C++ Projects view.  You will probably switch between the two views, but mostly work in the C/C++ Projects view.

It is helpful to have the C/C++ Development Tools set up before doing CVS checkouts and EPICS builds.  These are set in Window | Perferences.  For EPICS builds it is necessary to set HOST_ARCH or EPICS_HOST_ARCH.  The first is for 3.13 and the second is for 3.14, but HOST_ARCH will work for both (if only one of them is defined).  It is suggested you do this in Window | Preferences | C/C++ | Make | New Make Projects on the Environment tab.  It will be set to solaris-sparc, win32-x86, cygwin-x86, linux-x86, darwin-ppc, hpux-parisc, etc. for 3.14 builds and to solaris, WIN32, cygwin32,  Linux, Darwin, hp700, etc. for 3.13.  See the EPICS documentation.

If you build using the Microsoft tools, then you can specify the environment set by vcvars32.bat or its equivalent on this tab, as well.

If you are using a platform, such as Linux or Solaris, that needs LD_LIBRARY_PATH set, then you can set that on this tab also.    The directory for LD_LIBRARY_PATH  is where the shared object libraries from base are located.  It should be <your_base>/bin/<host_arch>, where your_base is the location of the base you want to use, and host_arch is the same as you set for HOST_ARCH.  Whether you choose Append environment to native environment or Replace native environment with specified environment on the tab, the LD_LIBRARY_PATH specified will override anything that was set elsewhere.  If you need other things in the LD_LIBRARY_PATH, then you need to include them all on this tab.  The same applies to PATH if you set it here.

On the Make Builder tab, you may want to set Stop on first build error on and  Build on resource save (Auto Build) off.  Indexing can take a long time and also deadlock.  It is probably not needed for base, unless you are developing base, not just using it.  It may be advisable to turn it off by setting Window | Preferences | C/C++ | Indexer to "No indexer (search-based features will not work correctly)".  These properties can be set on a per-project basis, as well.  Window | Preferences are just the defaults.


These are the APS front-end IOCs as checked out from CVS and managed in Eclipse.


This is a an IOC that has been built for several platforms, including VxWorks.