diff options
author | Ken Martin <ken.martin@kitware.com> | 2005-05-31 15:46:49 (GMT) |
---|---|---|
committer | Ken Martin <ken.martin@kitware.com> | 2005-05-31 15:46:49 (GMT) |
commit | 6999000852718d6d37b6bfaac3d0dbf6365846cb (patch) | |
tree | 14ad125702e61deea255820b17b6a671f9325f9a /Source/cmGlobalUnixMakefileGenerator3.h | |
parent | f79376c1d1211b60f2440a137ed0eeec2dc32677 (diff) | |
download | CMake-6999000852718d6d37b6bfaac3d0dbf6365846cb.zip CMake-6999000852718d6d37b6bfaac3d0dbf6365846cb.tar.gz CMake-6999000852718d6d37b6bfaac3d0dbf6365846cb.tar.bz2 |
ENH: now uses Makefile2 to cleanup zsh issues and provided some more documentation
Diffstat (limited to 'Source/cmGlobalUnixMakefileGenerator3.h')
-rw-r--r-- | Source/cmGlobalUnixMakefileGenerator3.h | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 79f2d21..d43f1ab 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -26,7 +26,34 @@ class cmLocalUnixMakefileGenerator3; * \brief Write a Unix makefiles. * * cmGlobalUnixMakefileGenerator3 manages UNIX build process for a tree + + + The basic approach of this generator is to produce Makefiles that will all + be run with the current working directory set to the Home Output + directory. The one exception to this is the subdirectory Makefiles which are + created as a convenience and just cd up to the Home Output directory and + invoke the main Makefiles. + + The make process starts with Makefile. Makefile should only contain the + targets the user is likely to invoke directly from a make command line. No + internal targets should be in this file. Makefile2 contains the internal + targets that are required to make the process work. + + Makefile2 in turn will recursively make targets in the correct order. Each + target has its own directory <target>.dir and its own makefile build.make in + that directory. Also in that directory is a couple makefiles per source file + used by the target. Typically these are named source.obj.build.make and + source.obj.build.depend.make. The source.obj.build.make contains the rules + for building, cleaning, and computing dependencies for the given source + file. The build.depend.make contains additional dependencies that were + computed during dependency scanning. An additional file called + source.obj.depend is used as a marker to indicate when dependencies must be + rescanned. + + Rules for custom commands follow the same model as rules for source files. + */ + class cmGlobalUnixMakefileGenerator3 : public cmGlobalGenerator { public: @@ -59,6 +86,7 @@ public: protected: void WriteMainMakefile(); + void WriteMainMakefile2(); void WriteMainCMakefile(); void WriteMainCMakefileLanguageRules(cmGeneratedFileStream& cmakefileStream); void WriteAllRules(cmLocalUnixMakefileGenerator3 *lg, @@ -68,12 +96,19 @@ protected: void WriteConvenienceRules(std::ostream& ruleFileStream, cmLocalUnixMakefileGenerator3 *, bool exclude); + void WriteConvenienceRules2(std::ostream& ruleFileStream, + cmLocalUnixMakefileGenerator3 *, + bool exclude); + void WriteDirectoryRules(std::ostream& ruleFileStream, cmLocalUnixMakefileGenerator3 *lg); + void WriteDirectoryRules2(std::ostream& ruleFileStream, + cmLocalUnixMakefileGenerator3 *lg); void AppendGlobalTargetDepends(std::vector<std::string>& depends, const cmTarget& target); - void AppendAnyGlobalDepend(std::vector<std::string>& depends, const char* name); + void AppendAnyGlobalDepend(std::vector<std::string>& depends, + const char* name); // does this generator need a requires step for any of its targets bool NeedRequiresStep(cmLocalUnixMakefileGenerator3 *lg); |