ENH: move most of the to global generator

This commit is contained in:
Bill Hoffman
2005-02-09 23:22:06 -05:00
parent b7b501bbe8
commit c840bbcaaf
4 changed files with 419 additions and 430 deletions
+53 -3
View File
@@ -20,10 +20,16 @@
#include "cmGlobalUnixMakefileGenerator.h"
/** \class cmGlobalUnixMakefileGenerator
* \brief Write a Unix makefiles.
/** \class cmGlobalKdevelopGenerator
* \brief Write Unix Makefiles accompanied by KDevelop3 project files.
*
* cmGlobalUnixMakefileGenerator manages UNIX build process for a tree
* cmGlobalKdevelopGenerator produces a project file for KDevelop 3 (KDevelop > 3.1.1).
* The project is based on the "Custom Makefile based C/C++" project of KDevelop.
* Such a project consists of Unix Makefiles in the build directory together
* with a <your_project>.kdevelop project file, which contains the project settings
* and a <your_project>.kdevelop.filelist file, which lists the source files relative
* to the kdevelop project directory. The kdevelop project directory is the base
* source directory.
*/
class cmGlobalKdevelopGenerator : public cmGlobalUnixMakefileGenerator
{
@@ -42,6 +48,50 @@ public:
///! Create a local generator appropriate to this Global Generator
virtual cmLocalGenerator *CreateLocalGenerator();
/**
* Generate the all required files for building this project/tree. This
* basically creates a series of LocalGenerators for each directory and
* requests that they Generate.
*/
virtual void Generate();
/*** Create the foo.kdevelop.filelist file, return false if it doesn't
succeed. If the file already exists the contents will be merged.
*/
bool CreateFilelistFile(cmLocalGenerator* lg,
std::vector<cmLocalGenerator*>& lgs,
const std::string& outputDir,
const std::string& projectDirIn,
const std::string& projectname,
std::string& cmakeFilePattern);
/** Create the foo.kdevelop file. This one calls MergeProjectFiles()
if it already exists, otherwise createNewProjectFile() The project
files will be created in \a outputDir (in the build tree), the
kdevelop project dir will be set to \a projectDir (in the source
tree). \a cmakeFilePattern consists of a lists of all cmake
listfiles used by this CMakeLists.txt */
void CreateProjectFile(const std::string& outputDir,
const std::string& projectDir,
const std::string& projectname,
const std::string& executable,
const std::string& cmakeFilePattern);
/*** Reads the old foo.kdevelop line by line and only replaces the
"important" lines
*/
void MergeProjectFiles(const std::string& outputDir,
const std::string& projectDir,
const std::string& filename,
const std::string& executable,
const std::string& cmakeFilePattern);
///! Creates a new foo.kdevelop file
void CreateNewProjectFile(const std::string& outputDir,
const std::string& projectDir,
const std::string& filename,
const std::string& executable,
const std::string& cmakeFilePattern);
};
#endif