ccbuild 1.5.5
Sponsored Links
ccbuild 1.5.5 Ranking & Summary
File size:
0.54 MB
Platform:
Any Platform
License:
GPL (GNU General Public License)
Price:
Downloads:
845
Date added:
2007-07-03
Publisher:
A. Bram Neijt
ccbuild 1.5.5 description
The ccbuild goal is to allow the developer to run only one command: ccbuild. ccbuild program will then find out what it should do on its own, and start updating any source connected to your current programs (by looking at #include statements).
Currently the program can do this using only the information from your source code and a file containing information about compilation parameters that are needed when a specific global include ("#include ") is used.
The main difference with other build tools is that, during the development phase, ccbuild should be able to find its own way: no part of the build should have to be scripted! This is also why ccbuild is very system specific and only runs on Linux (and hopfully any other platform that looks like it).
When developing C++ programs according to a standard of "a file per function, a directory per class" your filesystem will be in constant turmoil. When you use the GNU autotools you will have to edit your Makefile.am for every function and sometimes let the tools re-evaluate your whole system!
This, of course, will not do. So, I set out to create a tool to aid me in my development phase. Mind you, the autotools are great for portability and distribution, but during development they kept me from good coding ethics.
Main features:
- Fully automated building, with only one simple command.
- Automatic dependency resolution by reading the sourcecode.
- Automatic binary target resolution.
- Semi-automatic library and linking resolution (via a simple configuration file).
- Specific object file cleaning.
- Separation of object files an source by using an "o" directory for output.
- Monolithic makefile generation (without a clean rule at the moment).
- Header include graphs using the Graphviz DOT language (example).
- Support for ".cc" and ".cpp" extensions.
When run without any options ccbuild will issue the command "build". For every .cc file in the local directory: if it contains an "int main" function, it will be seen as a binary target. For every binary target, ccbuild will follow its includes to other directories and see all .cc files in those directories as objects (if they dont have an "int main" function). It will then compile the object, keeping any linker options back for the binary target. To know what linker options to use, see Resolution.
To be able to link the binary, the compiler needs to know what libraries to link to and of course what include paths need to be added. The ccbuild utility assumes that for every extra comipler argument, there is a global include that can indicate its needed.
When a global include is encountered ("#include ") it will try to resolve it by looking it up in its table, issueing a warning if it is not found in the resolution table or in "/usr/include" or in "/usr/include/g++-3/". The table of resolutions is loaded from tab saperated configuration files "ccResolutions" and "~/.ccbuild/ccResolutions" (in that order).
Currently this can only support options for either link OR compile time. (See TODO: "Propper...") Which means you cannot mix "-I" (include) and "-l" (library) options yet.
An example configuration file wich currently is useful is (notice the tab between "png.h" and "-lstdc++ -lpng -lz"):
png.h -lstdc++ -lpng -lz
sqlite3.h -lsqlite3
Version restrictions:
- Any source file that needs to be compiled into an executable must contain a main function returning an int.
- All code needed for a class must be contained in one directory (all .cc files are taken to be object targets for the main program including the header in the same directory).
- Currently source files need to have one of these extensions: .cc, .cpp, .h, .hh, .ih, .tcc. Any other extension is not seen or interpreted in the wrong way.
Currently the program can do this using only the information from your source code and a file containing information about compilation parameters that are needed when a specific global include ("#include ") is used.
The main difference with other build tools is that, during the development phase, ccbuild should be able to find its own way: no part of the build should have to be scripted! This is also why ccbuild is very system specific and only runs on Linux (and hopfully any other platform that looks like it).
When developing C++ programs according to a standard of "a file per function, a directory per class" your filesystem will be in constant turmoil. When you use the GNU autotools you will have to edit your Makefile.am for every function and sometimes let the tools re-evaluate your whole system!
This, of course, will not do. So, I set out to create a tool to aid me in my development phase. Mind you, the autotools are great for portability and distribution, but during development they kept me from good coding ethics.
Main features:
- Fully automated building, with only one simple command.
- Automatic dependency resolution by reading the sourcecode.
- Automatic binary target resolution.
- Semi-automatic library and linking resolution (via a simple configuration file).
- Specific object file cleaning.
- Separation of object files an source by using an "o" directory for output.
- Monolithic makefile generation (without a clean rule at the moment).
- Header include graphs using the Graphviz DOT language (example).
- Support for ".cc" and ".cpp" extensions.
When run without any options ccbuild will issue the command "build". For every .cc file in the local directory: if it contains an "int main" function, it will be seen as a binary target. For every binary target, ccbuild will follow its includes to other directories and see all .cc files in those directories as objects (if they dont have an "int main" function). It will then compile the object, keeping any linker options back for the binary target. To know what linker options to use, see Resolution.
To be able to link the binary, the compiler needs to know what libraries to link to and of course what include paths need to be added. The ccbuild utility assumes that for every extra comipler argument, there is a global include that can indicate its needed.
When a global include is encountered ("#include ") it will try to resolve it by looking it up in its table, issueing a warning if it is not found in the resolution table or in "/usr/include" or in "/usr/include/g++-3/". The table of resolutions is loaded from tab saperated configuration files "ccResolutions" and "~/.ccbuild/ccResolutions" (in that order).
Currently this can only support options for either link OR compile time. (See TODO: "Propper...") Which means you cannot mix "-I" (include) and "-l" (library) options yet.
An example configuration file wich currently is useful is (notice the tab between "png.h" and "-lstdc++ -lpng -lz"):
png.h -lstdc++ -lpng -lz
sqlite3.h -lsqlite3
Version restrictions:
- Any source file that needs to be compiled into an executable must contain a main function returning an int.
- All code needed for a class must be contained in one directory (all .cc files are taken to be object targets for the main program including the header in the same directory).
- Currently source files need to have one of these extensions: .cc, .cpp, .h, .hh, .ih, .tcc. Any other extension is not seen or interpreted in the wrong way.
ccbuild 1.5.5 Screenshot
ccbuild 1.5.5 Keywords
Bookmark ccbuild 1.5.5
ccbuild 1.5.5 Copyright
WareSeeker periodically updates pricing and software information of ccbuild 1.5.5 full version from the publisher, so some information may be slightly out-of-date. You should confirm all information before relying on it. Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future development of ccbuild 1.5.5 Edition. Download links are directly from our publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed
Featured Software
Want to place your software product here?
Please contact us for consideration.
Contact WareSeeker.com
Related Information
ccbuilders
build
for every home candles
includes free domain
a thorn for every heart
include this code
includes product information
includegraphics
file extension pdf
to wong foo thanks for everything julie newmar
includes related article
that includes
for everyone
for every action there is a reaction
fileneu0027s
source for everything jewish
georgia some famous explorers include
include me out
Related Software
ATutor is an Open Source Web-based Learning Content Management System designed with accessibility and adaptability in mind. Free Download
CCIDE is a tool that generates code from embedded decision tables. Free Download
C::Include is a package to easy operate with binary data via describing they like C/C++ structs. Free Download
Disc-cover provides an easy way to produce covers for audio CDs. Free Download
Rabbit is a presentation tool using RD. Free Download
MIME-tool is a little mime encoding tool. Free Download
Include is a Perl module that allow you to use #defines from C header files. Free Download
Quasar is a full function, stand-alone business accounting package Free Download
Latest Software
Popular Software
Favourite Software