Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
CMake
CMake
Commits
766c093d
Commit
766c093d
authored
Oct 11, 2004
by
Bill Hoffman
Browse files
NEW: add kdevelop patch from Alexander Neundorf
parent
4b7f3715
Changes
6
Hide whitespace changes
Inline
Side-by-side
Source/CMakeLists.txt
View file @
766c093d
...
...
@@ -42,6 +42,7 @@ cmLocalUnixMakefileGenerator.h
cmVariableWatch.h
)
# configure the .h file
CONFIGURE_FILE
(
${
CMake_SOURCE_DIR
}
/Source/cmConfigure.cmake.h.in
...
...
@@ -63,6 +64,14 @@ IF (APPLE)
)
ENDIF
(
APPLE
)
# Kdevelop only works on UNIX and not windows
IF
(
UNIX AND NOT WIN32
)
SET
(
SRCS
${
SRCS
}
cmGlobalKdevelopGenerator.cxx
cmLocalKdevelopGenerator.cxx
)
ENDIF
(
UNIX AND NOT WIN32
)
IF
(
WIN32
)
IF
(
NOT UNIX
)
SET
(
SRCS
${
SRCS
}
...
...
Source/cmGlobalKdevelopGenerator.cxx
0 → 100644
View file @
766c093d
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile$
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
Copyright (c) 2004 Alexander Neundorf, neundorf@kde.org. All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#include
"cmGlobalKdevelopGenerator.h"
#include
"cmLocalKdevelopGenerator.h"
#include
"cmMakefile.h"
#include
"cmake.h"
cmGlobalKdevelopGenerator
::
cmGlobalKdevelopGenerator
()
{
// This type of makefile always requires unix style paths
m_ForceUnixPaths
=
true
;
m_FindMakeProgramFile
=
"CMakeUnixFindMake.cmake"
;
}
///! Create a local generator appropriate to this Global Generator
cmLocalGenerator
*
cmGlobalKdevelopGenerator
::
CreateLocalGenerator
()
{
cmLocalGenerator
*
lg
=
new
cmLocalKdevelopGenerator
;
lg
->
SetGlobalGenerator
(
this
);
return
lg
;
}
//----------------------------------------------------------------------------
void
cmGlobalKdevelopGenerator
::
GetDocumentation
(
cmDocumentationEntry
&
entry
)
const
{
entry
.
name
=
this
->
GetName
();
entry
.
brief
=
"Generates KDevelop 3 project files."
;
entry
.
full
=
"A hierarchy of UNIX makefiles is generated into the build tree. Any "
"standard UNIX-style make program can build the project through the "
"default make target. A
\"
make install
\"
target is also provided."
"Additionally in each directory which features executable or library"
" targets a KDevelop 3 project file is generated.
\n
"
"If you change the settings using KDevelop your cmake will try its best"
"to keep your changes when regenerating the project files."
;
}
Source/cmGlobalKdevelopGenerator.h
0 → 100644
View file @
766c093d
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile$
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
Copyright (c) 2004 Alexander Neundorf, neundorf@kde.org. All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef cmGlobalKdevelopGenerator_h
#define cmGlobalKdevelopGenerator_h
#include
"cmGlobalUnixMakefileGenerator.h"
/** \class cmGlobalUnixMakefileGenerator
* \brief Write a Unix makefiles.
*
* cmGlobalUnixMakefileGenerator manages UNIX build process for a tree
*/
class
cmGlobalKdevelopGenerator
:
public
cmGlobalUnixMakefileGenerator
{
public:
cmGlobalKdevelopGenerator
();
static
cmGlobalGenerator
*
New
()
{
return
new
cmGlobalKdevelopGenerator
;
}
///! Get the name for the generator.
virtual
const
char
*
GetName
()
const
{
return
cmGlobalKdevelopGenerator
::
GetActualName
();}
static
const
char
*
GetActualName
()
{
return
"KDevelop3"
;}
/** Get the documentation entry for this generator. */
virtual
void
GetDocumentation
(
cmDocumentationEntry
&
entry
)
const
;
///! Create a local generator appropriate to this Global Generator
virtual
cmLocalGenerator
*
CreateLocalGenerator
();
};
#endif
Source/cmLocalKdevelopGenerator.cxx
0 → 100644
View file @
766c093d
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile$
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
Copyright (c) 2004 Alexander Neundorf, neundorf@kde.org. All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#include
"cmGlobalGenerator.h"
#include
"cmLocalKdevelopGenerator.h"
#include
"cmMakefile.h"
#include
"cmSystemTools.h"
#include
"cmSourceFile.h"
#include
"cmMakeDepend.h"
#include
"cmCacheManager.h"
#include
"cmGeneratedFileStream.h"
#include
<cmsys/RegularExpression.hxx>
#include
<iostream>
cmLocalKdevelopGenerator
::
cmLocalKdevelopGenerator
()
:
cmLocalUnixMakefileGenerator
()
{
}
cmLocalKdevelopGenerator
::~
cmLocalKdevelopGenerator
()
{
}
#include
<stdio.h>
#include
<string>
#include
<vector>
void
cmLocalKdevelopGenerator
::
Generate
(
bool
fromTheTop
)
{
cmLocalUnixMakefileGenerator
::
Generate
(
fromTheTop
);
bool
containsTargets
=
false
;
std
::
string
executable
;
cmTargets
&
targets
=
m_Makefile
->
GetTargets
();
for
(
cmTargets
::
const_iterator
ti
=
targets
.
begin
();
ti
!=
targets
.
end
();
ti
++
)
{
switch
(
ti
->
second
.
GetType
())
{
case
cmTarget
::
EXECUTABLE
:
executable
=
ti
->
first
;
case
cmTarget
::
STATIC_LIBRARY
:
case
cmTarget
::
SHARED_LIBRARY
:
case
cmTarget
::
MODULE_LIBRARY
:
case
cmTarget
::
UTILITY
:
containsTargets
=
true
;
break
;
case
cmTarget
::
INSTALL_FILES
:
case
cmTarget
::
INSTALL_PROGRAMS
:
default:
break
;
}
}
if
(
containsTargets
)
{
std
::
string
projectFileDir
=
m_Makefile
->
GetStartOutputDirectory
();
std
::
string
filelistDir
=
m_Makefile
->
GetDefinition
(
"PROJECT_SOURCE_DIR"
);
//build the project name by taking the subdir
std
::
string
projectName
=
m_Makefile
->
GetProjectName
();
projectName
+=
m_Makefile
->
GetStartOutputDirectory
();
cmSystemTools
::
ReplaceString
(
projectName
,
filelistDir
.
c_str
(),
""
);
cmSystemTools
::
ReplaceString
(
projectName
,
"/"
,
"_"
);
std
::
string
cmakeFilePattern
(
"*/CMakeLists.txt;*.cmake;"
);
if
(
!
this
->
CreateFilelistFile
(
filelistDir
,
projectName
,
cmakeFilePattern
))
{
return
;
}
this
->
CreateProjectFile
(
filelistDir
,
projectName
,
executable
,
cmakeFilePattern
);
}
}
void
cmLocalKdevelopGenerator
::
CreateProjectFile
(
const
std
::
string
&
dir
,
const
std
::
string
&
projectname
,
const
std
::
string
&
executable
,
const
std
::
string
&
cmakeFilePattern
)
{
std
::
string
filename
=
m_Makefile
->
GetStartOutputDirectory
();
filename
+=
"/"
;
filename
+=
projectname
+
".kdevelop"
;
if
(
cmSystemTools
::
FileExists
(
filename
.
c_str
()))
{
this
->
MergeProjectFiles
(
dir
,
filename
,
executable
,
cmakeFilePattern
);
}
else
{
this
->
CreateNewProjectFile
(
dir
,
filename
,
executable
,
cmakeFilePattern
);
}
}
void
cmLocalKdevelopGenerator
::
MergeProjectFiles
(
const
std
::
string
&
dir
,
const
std
::
string
&
filename
,
const
std
::
string
&
executable
,
const
std
::
string
&
cmakeFilePattern
)
{
std
::
ifstream
oldProjectFile
(
filename
.
c_str
());
if
(
!
oldProjectFile
)
{
this
->
CreateNewProjectFile
(
dir
,
filename
,
executable
,
cmakeFilePattern
);
return
;
}
std
::
string
tmp
;
std
::
vector
<
std
::
string
>
lines
;
while
(
cmSystemTools
::
GetLineFromStream
(
oldProjectFile
,
tmp
))
{
lines
.
push_back
(
tmp
);
}
oldProjectFile
.
close
();
cmGeneratedFileStream
tempFile
(
filename
.
c_str
());
tempFile
.
SetAlwaysCopy
(
true
);
std
::
ostream
&
fout
=
tempFile
.
GetStream
();
if
(
!
fout
)
{
cmSystemTools
::
Error
(
"Error can not open for write: "
,
filename
.
c_str
());
return
;
}
for
(
std
::
vector
<
std
::
string
>::
const_iterator
it
=
lines
.
begin
();
it
!=
lines
.
end
();
it
++
)
{
const
char
*
line
=
(
*
it
).
c_str
();
if
((
strstr
(
line
,
"<projectdirectory>"
)
!=
0
)
||
(
strstr
(
line
,
"<projectmanagement>"
)
!=
0
)
||
(
strstr
(
line
,
"<absoluteprojectpath>"
)
!=
0
)
||
(
strstr
(
line
,
"<buildtool>"
)
!=
0
)
||
(
strstr
(
line
,
"<builddir>"
)
!=
0
))
{
continue
;
}
fout
<<*
it
<<
"
\n
"
;
if
(
strstr
(
line
,
"<general>"
))
{
fout
<<
" <projectmanagement>KDevCustomProject</projectmanagement>
\n
"
;
fout
<<
" <projectdirectory>"
<<
dir
.
c_str
()
<<
"</projectdirectory>
\n
"
;
//this one is important
fout
<<
" <absoluteprojectpath>true</absoluteprojectpath>
\n
"
;
//and this one
}
if
(
strstr
(
line
,
"<build>"
))
{
fout
<<
" <buildtool>make</buildtool>
\n
"
;
//this one is important
fout
<<
" <builddir>"
<<
m_Makefile
->
GetStartOutputDirectory
()
<<
"</builddir>
\n
"
;
//and this one
}
}
}
void
cmLocalKdevelopGenerator
::
CreateNewProjectFile
(
const
std
::
string
&
dir
,
const
std
::
string
&
filename
,
const
std
::
string
&
executable
,
const
std
::
string
&
cmakeFilePattern
)
{
cmGeneratedFileStream
tempFile
(
filename
.
c_str
());
tempFile
.
SetAlwaysCopy
(
true
);
std
::
ostream
&
fout
=
tempFile
.
GetStream
();
if
(
!
fout
)
{
cmSystemTools
::
Error
(
"Error can not open for write: "
,
filename
.
c_str
());
return
;
}
fout
<<
"<?xml version = '1.0'?>
\n
"
;
fout
<<
"<kdevelop>
\n
"
;
fout
<<
" <general>
\n
"
;
fout
<<
" <author></author>
\n
"
;
fout
<<
" <email></email>
\n
"
;
fout
<<
" <version>$VERSION$</version>
\n
"
;
fout
<<
" <projectmanagement>KDevCustomProject</projectmanagement>
\n
"
;
fout
<<
" <primarylanguage>C++</primarylanguage>
\n
"
;
fout
<<
" <ignoreparts/>
\n
"
;
fout
<<
" <projectdirectory>"
<<
dir
.
c_str
()
<<
"</projectdirectory>
\n
"
;
//this one is important
fout
<<
" <absoluteprojectpath>true</absoluteprojectpath>
\n
"
;
//and this one
fout
<<
" <secondaryLanguages>
\n
"
;
fout
<<
" <language>C</language>
\n
"
;
fout
<<
" </secondaryLanguages>
\n
"
;
fout
<<
" </general>
\n
"
;
fout
<<
" <kdevcustomproject>
\n
"
;
fout
<<
" <run>
\n
"
;
fout
<<
" <mainprogram>"
<<
m_Makefile
->
GetStartOutputDirectory
()
<<
"/"
<<
executable
.
c_str
()
<<
"</mainprogram>
\n
"
;
fout
<<
" <directoryradio>custom</directoryradio>
\n
"
;
fout
<<
" <customdirectory>/</customdirectory>
\n
"
;
fout
<<
" <programargs></programargs>
\n
"
;
fout
<<
" <terminal>false</terminal>
\n
"
;
fout
<<
" <autocompile>true</autocompile>
\n
"
;
fout
<<
" <envvars/>
\n
"
;
fout
<<
" </run>
\n
"
;
fout
<<
" <build>
\n
"
;
fout
<<
" <buildtool>make</buildtool>
\n
"
;
//this one is important
fout
<<
" <builddir>"
<<
m_Makefile
->
GetStartOutputDirectory
()
<<
"</builddir>
\n
"
;
//and this one
fout
<<
" </build>
\n
"
;
fout
<<
" <make>
\n
"
;
fout
<<
" <abortonerror>false</abortonerror>
\n
"
;
fout
<<
" <numberofjobs>1</numberofjobs>
\n
"
;
fout
<<
" <dontact>false</dontact>
\n
"
;
fout
<<
" <makebin></makebin>
\n
"
;
fout
<<
" <selectedenvironment>default</selectedenvironment>
\n
"
;
fout
<<
" <environments>
\n
"
;
fout
<<
" <default/>
\n
"
;
fout
<<
" </environments>
\n
"
;
fout
<<
" </make>
\n
"
;
fout
<<
" </kdevcustomproject>
\n
"
;
fout
<<
" <kdevfileCreate>
\n
"
;
fout
<<
" <filetypes/>
\n
"
;
fout
<<
" <useglobaltypes>
\n
"
;
fout
<<
" <type ext=
\"
ui
\"
/>
\n
"
;
fout
<<
" <type ext=
\"
cpp
\"
/>
\n
"
;
fout
<<
" <type ext=
\"
h
\"
/>
\n
"
;
fout
<<
" </useglobaltypes>
\n
"
;
fout
<<
" </kdevfilecreate>
\n
"
;
fout
<<
" <kdevdoctreeview>
\n
"
;
fout
<<
" <projectdoc>
\n
"
;
fout
<<
" <userdocDir>html/</userdocDir>
\n
"
;
fout
<<
" <apidocDir>html/</apidocDir>
\n
"
;
fout
<<
" </projectdoc>
\n
"
;
fout
<<
" <ignoreqt_xml/>
\n
"
;
fout
<<
" <ignoredoxygen/>
\n
"
;
fout
<<
" <ignorekdocs/>
\n
"
;
fout
<<
" <ignoretocs/>
\n
"
;
fout
<<
" <ignoredevhelp/>
\n
"
;
fout
<<
" </kdevdoctreeview>
\n
"
;
fout
<<
" <cppsupportpart>
\n
"
;
fout
<<
" <filetemplates>
\n
"
;
fout
<<
" <interfacesuffix>.h</interfacesuffix>
\n
"
;
fout
<<
" <implementationsuffix>.cpp</implementationsuffix>
\n
"
;
fout
<<
" </filetemplates>
\n
"
;
fout
<<
" </cppsupportpart>
\n
"
;
fout
<<
" <kdevcppsupport>
\n
"
;
fout
<<
" <codecompletion>
\n
"
;
fout
<<
" <includeGlobalFunctions>true</includeGlobalFunctions>
\n
"
;
fout
<<
" <includeTypes>true</includeTypes>
\n
"
;
fout
<<
" <includeEnums>true</includeEnums>
\n
"
;
fout
<<
" <includeTypedefs>false</includeTypedefs>
\n
"
;
fout
<<
" <automaticCodeCompletion>true</automaticCodeCompletion>
\n
"
;
fout
<<
" <automaticArgumentsHint>true</automaticArgumentsHint>
\n
"
;
fout
<<
" <automaticHeaderCompletion>true</automaticHeaderCompletion>
\n
"
;
fout
<<
" <codeCompletionDelay>250</codeCompletionDelay>
\n
"
;
fout
<<
" <argumentsHintDelay>400</argumentsHintDelay>
\n
"
;
fout
<<
" <headerCompletionDelay>250</headerCompletionDelay>
\n
"
;
fout
<<
" </codecompletion>
\n
"
;
fout
<<
" <references/>
\n
"
;
fout
<<
" </kdevcppsupport>
\n
"
;
fout
<<
" <kdevfileview>
\n
"
;
fout
<<
" <groups>
\n
"
;
fout
<<
" <group pattern=
\"
"
<<
cmakeFilePattern
.
c_str
()
<<
"
\"
name=
\"
CMake
\"
/>
\n
"
;
fout
<<
" <group pattern=
\"
*.h;*.hxx
\"
name=
\"
Header
\"
/>
\n
"
;
fout
<<
" <group pattern=
\"
*.cpp;*.c;*.C;*.cxx
\"
name=
\"
Sources
\"
/>
\n
"
;
fout
<<
" <group pattern=
\"
*.ui
\"
name=
\"
Qt Designer files
\"
/>
\n
"
;
fout
<<
" <hidenonprojectfiles>true</hidenonprojectfiles>
\n
"
;
fout
<<
" </groups>
\n
"
;
fout
<<
" <tree>
\n
"
;
fout
<<
" <hidepatterns>*.o,*.lo,CVS,*~,cmake*</hidepatterns>
\n
"
;
fout
<<
" <hidenonprojectfiles>true</hidenonprojectfiles>
\n
"
;
fout
<<
" </tree>
\n
"
;
fout
<<
" </kdevfileview>
\n
"
;
fout
<<
"</kdevelop>
\n
"
;
}
bool
cmLocalKdevelopGenerator
::
CreateFilelistFile
(
const
std
::
string
&
_dir
,
const
std
::
string
&
projectname
,
std
::
string
&
cmakeFilePattern
)
{
std
::
string
filelistDir
=
_dir
+
"/"
;
std
::
string
filename
=
filelistDir
+
projectname
+
".kdevelop.filelist"
;
std
::
set
<
cmStdString
>
files
;
//get all cmake files
std
::
string
tmp
;
const
std
::
vector
<
std
::
string
>&
listFiles
=
m_Makefile
->
GetListFiles
();
for
(
std
::
vector
<
std
::
string
>::
const_iterator
it
=
listFiles
.
begin
();
it
!=
listFiles
.
end
();
it
++
)
{
tmp
=*
it
;
cmSystemTools
::
ReplaceString
(
tmp
,
filelistDir
.
c_str
(),
""
);
if
(
tmp
[
0
]
!=
'/'
)
{
files
.
insert
(
tmp
);
tmp
=
cmSystemTools
::
GetFilenameName
(
tmp
);
//add all files which dont match the default */CMakeLists.txt;*cmake; to the file pattern
if
((
tmp
!=
"CMakeLists.txt"
)
&&
(
strstr
(
tmp
.
c_str
(),
".cmake"
)
==
0
))
{
cmakeFilePattern
+=
"*/"
+
tmp
+
";"
;
}
}
}
//get all sources
cmTargets
&
targets
=
m_Makefile
->
GetTargets
();
for
(
cmTargets
::
const_iterator
ti
=
targets
.
begin
();
ti
!=
targets
.
end
();
ti
++
)
{
const
std
::
vector
<
std
::
string
>&
sources
=
ti
->
second
.
GetSourceLists
();
for
(
std
::
vector
<
std
::
string
>::
const_iterator
it
=
sources
.
begin
();
it
!=
sources
.
end
();
it
++
)
{
tmp
=*
it
;
if
(
tmp
[
0
]
!=
'/'
)
//no absolute path
{
tmp
=
std
::
string
(
m_Makefile
->
GetDefinition
(
"CMAKE_CURRENT_SOURCE_DIR"
))
+
"/"
+
tmp
;
}
tmp
=
cmSystemTools
::
CollapseFullPath
(
tmp
.
c_str
());
cmSystemTools
::
ReplaceString
(
tmp
,
filelistDir
.
c_str
(),
""
);
if
(
tmp
[
0
]
==
'/'
)
{
std
::
string
errorMessage
(
"In order to get working KDevelop project files, you have to call "
"PROJECT() in a directory which is a parent directory of all source files. The source file "
);
errorMessage
+=
tmp
+
" is not located beneath your current project directory "
+
filelistDir
+
" ."
;
cmSystemTools
::
Error
(
errorMessage
.
c_str
());
return
false
;
}
files
.
insert
(
tmp
);
}
}
//check if the output file already exists and read it
//insert all files which exist into the set of files
std
::
ifstream
oldFilelist
(
filename
.
c_str
());
if
(
oldFilelist
)
{
while
(
cmSystemTools
::
GetLineFromStream
(
oldFilelist
,
tmp
))
{
if
(
tmp
[
0
]
==
'/'
)
{
continue
;
}
std
::
string
completePath
=
filelistDir
+
tmp
;
if
(
cmSystemTools
::
FileExists
(
completePath
.
c_str
()))
{
files
.
insert
(
tmp
);
}
}
oldFilelist
.
close
();
}
cmGeneratedFileStream
tempFile
(
filename
.
c_str
());
tempFile
.
SetAlwaysCopy
(
true
);
std
::
ostream
&
fout
=
tempFile
.
GetStream
();
if
(
!
fout
)
{
cmSystemTools
::
Error
(
"Error can not open for write: "
,
filename
.
c_str
());
return
false
;
}
for
(
std
::
set
<
cmStdString
>::
const_iterator
it
=
files
.
begin
();
it
!=
files
.
end
();
it
++
)
{
fout
<<*
it
<<
"
\n
"
;
}
return
true
;
}
Source/cmLocalKdevelopGenerator.h
0 → 100644
View file @
766c093d
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile$
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
Copyright (c) 2004 Alexander Neundorf, neundorf@kde.org. All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef cmLocalKdevelopGenerator_h
#define cmLocalKdevelopGenerator_h
#include
"cmLocalUnixMakefileGenerator.h"
class
cmDependInformation
;
class
cmMakeDepend
;
class
cmTarget
;
class
cmSourceFile
;
/** \class cmLocalKdevelopGenerator
* \brief Write a LocalUnix makefiles.
*
* cmLocalKdevelopGenerator produces a LocalUnix makefile from its
* member m_Makefile.
*/
class
cmLocalKdevelopGenerator
:
public
cmLocalUnixMakefileGenerator
{
public:
///! Set cache only and recurse to false by default.
cmLocalKdevelopGenerator
();
virtual
~
cmLocalKdevelopGenerator
();
/**
* Generate the makefile for this directory. fromTheTop indicates if this
* is being invoked as part of a global Generate or specific to this
* directory. The difference is that when done from the Top we might skip
* some steps to save time, such as dependency generation for the
* makefiles. This is done by a direct invocation from make.
*/
virtual
void
Generate
(
bool
fromTheTop
);
protected:
///Create the foo.kdevelop file. This one calls MergeProjectFiles() if it already exists, otherwise createNewProjectFile()
void
CreateProjectFile
(
const
std
::
string
&
dir
,
const
std
::
string
&
projectname
,
const
std
::
string
&
executable
,
const
std
::
string
&
cmakeFilePattern
);
/// Create the foo.kdevelop.filelist file, return false if it doesn't succeed
bool
CreateFilelistFile
(
const
std
::
string
&
dir
,
const
std
::
string
&
projectname
,
std
::
string
&
cmakeFilePattern
);
///Reads the old foo.kdevelop line by line and only replaces the "important" lines
void
MergeProjectFiles
(
const
std
::
string
&
dir
,
const
std
::
string
&
filename
,
const
std
::
string
&
executable
,
const
std
::
string
&
cmakeFilePattern
);
///Creates a new foo.kdevelop file
void
CreateNewProjectFile
(
const
std
::
string
&
dir
,
const
std
::
string
&
filename
,
const
std
::
string
&
executable
,
const
std
::
string
&
cmakeFilePattern
);
};
#endif
Source/cmake.cxx
View file @
766c093d
...
...
@@ -25,29 +25,29 @@
// include the generator
#if defined(_WIN32) && !defined(__CYGWIN__)
#include
"cmGlobalVisualStudio6Generator.h"
#if !defined(__MINGW32__)
#include
"cmGlobalVisualStudio7Generator.h"
#include
"cmGlobalVisualStudio71Generator.h"
#include
"cmGlobalVisualStudio8Generator.h"
#endif
#include
"cmGlobalBorlandMakefileGenerator.h"
#include
"cmGlobalNMakeMakefileGenerator.h"
#include
"cmGlobalUnixMakefileGenerator.h"
#include
"cmWin32ProcessExecution.h"
# include "cmGlobalVisualStudio6Generator.h"
# if !defined(__MINGW32__)
# include "cmGlobalVisualStudio7Generator.h"
# include "cmGlobalVisualStudio71Generator.h"
# include "cmGlobalVisualStudio8Generator.h"
# endif
# include "cmGlobalBorlandMakefileGenerator.h"
# include "cmGlobalNMakeMakefileGenerator.h"
# include "cmWin32ProcessExecution.h"
#else
#include
"cmGlobalUnixMakefileGenerator.h"
#endif
#include
"cmGlobalUnixMakefileGenerator.h"
#include
"cmGlobalKdevelopGenerator.h"
#include
<stdlib.h>
// required for atoi
#ifdef __APPLE__
#include
<sys/types.h>
#include
<sys/time.h>
#include
<sys/resource.h>
#if defined(CMAKE_BUILD_WITH_CMAKE)
#include
"cmGlobalCodeWarriorGenerator.h"
#endif
#
include <sys/types.h>
#
include <sys/time.h>
#
include <sys/resource.h>
#
if defined(CMAKE_BUILD_WITH_CMAKE)
#
include "cmGlobalCodeWarriorGenerator.h"