acdk::make::CppSourceDependTask checks
for include dependencies of a C++ source.
If a source file includes a header and this
header has a younger modification time as
the target object file, the source has to
be recompiled.
CppSourceDependTask does not use an external
C preprocessor but uses an own build in parser.
This internal parser does not regard defines, but
evaluates all include files. This has the effect,
that also #included header are evaluated which
are deactivated by #define.
In normal mode CppSourceDependTask follows all
header, included by #include "Header.h"
and #include recursivelly.
With the constructor arguments checkRecursive
the recursive parsing (also parse the included
headers for includes can be switched off.
With the constructor argument onlyDirectIncludes
only includes with the form #include "Header.h"
are parsed (which are normally project own header files),
whereas #include are ignored.
With the acdkmc comandline option -dd only
direct includes will be parsed. The acdk command line
-dn the CompileTask will not check for source
dependencies.
Different to external C++ parsers the CppSourceDependTask
caches all parsed dependencies for a header file, so
parsing all headers should consume much time.
The CompileTask caches the pre-parsed dependency try
over all sources of the project.
acdk::make::AcdkBinaryTask creates
an ACDK binary.
This task is the base class for AcdkLibTask and AcdkExeTask.
An AcdkBinary tasks asumes that the sources are
organized following way:
./acdk_prj -> Project directory
./acdk_prj/build.csf -> amake file.
./acdk_prj/src/namespace1/namespace2/Source.cpp -> sources are in src sub directory
./acdk_prj/tobj/* -> object files will stored here
./acdk_prj/cfg -> Project configuration files
./bin -> acdk binary directory
./include -> install target of sources (./include/namespac1/namespace2/Source.cpp)
./cfg -> install target of cfg from ./acdk_prj/cfg
An AcdkBinaryTasks devides from two sources:
Ordinary sources (files and directories) and
Module directories.
For modules the man acdkmc meta compiler
will parse the header and generates metainf files.
In the subdirectory metainf_modulename cpp files
will be generated containing extended metainfo.
If for example AcdkBinaryTask is named my_package
AcdkBinaryTask defines the preprocessor value
USE_MY_PACKAGE.