Description of the internal concepts of acdkmake.
Root
[Enviromnent]
<- acdkmake globals
<- build props (passed to Task.execute())
<- Target specific Props (held by Task)
- Build options
- Load other configuration .csf before starting build.csf.
- Use generated project files (f.e. msdev.exe) instead of own builder
- Plugin for eclipse
- Compile options
- Support for compiling
c Sources.
- optional use
libtool to compile
- C++ options for rtti, exception support
- console/windows options
- Support for static libraries
- Support for mingw.
- support for ressource compiler (vc, borland)
- flag for threaded applications (set compiler and linker settings)
- Parser for compiler to unify compiler output (warnings, errors).
- Generation options
- Build make and project files
- Tool
- Class (like CCompiler)
- Tribe (like vc6, posix-gnuc, dos, unix)
Tools are identified by ToolClass (CCompiler) and ToolTribe.
- FileTranslater. Has Input and Output files and additionally log output
- CCompiler (FileTranslater): compiles .c -> .o/.obj
- CCCompiler (FileTranslater): compiles .c -> .o/.obj
- JavaCompiler (FileTranslater): JC_
- Linker (FileTranslater): CCC_
- Builder uses tools like amake, make, devenv, ant
- ExeBuilder, LibBuilder, StaticLibBuilder, SharedLibBuilder:
Can use Compiler/Linker or make/project files
- ProjectGenerator, ProjectGroupGenerator, ProjectTargetGenerator
- VersionControl
- Shell
- FileCopy, FileMove, FileRemove, FileMakeDir
- Install
- acdkmc
- ResourceCompiler
ProjectBuilder:
CppExeBuilder: SharedLibBuilder
FileDependTask
CCCompiler
LINKER(EXE)
CppSharedLibBuilder
CCCompiler
Linker(SHARED)
ProjectBuilder:
CppExeBuilder:
make -f xxx target
// pseudo code
class Tool extends Task
{
String getToolClass();
String getToolTribe();
Tool initTool(Props props);
static Tool getTool(String toolClass, String toolTribe = Nil);
}
class FileTranslater extends Tool
{
bool translates(String fileExt);
String translatesTo(String file);
}
RCCompiler cc = (RCCompiler)Tools::getTool("CCompiler");
RCCompiler cc = (RCCompiler)Tools::getTool("CCompiler", "vc");
Props p = new Props(
|
If more than one or none ToolTribe was found, may interact with
user to select the tool.
The ToolOutputFilter filters the output of
|