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
3031467e
Commit
3031467e
authored
May 20, 2004
by
Andy Cedilnik
Browse files
ENH: Implement additional make clean files as a directory property instead of cmake variable
parent
17d6f9e1
Changes
7
Hide whitespace changes
Inline
Side-by-side
Modules/UseSWIG.cmake
View file @
3031467e
...
...
@@ -146,7 +146,8 @@ MACRO(SWIG_ADD_MODULE name language)
SWIG_ADD_SOURCE_TO_MODULE
(
${
name
}
swig_generated_source
${
it
}
)
SET
(
swig_generated_sources
${
swig_generated_sources
}
"
${
swig_generated_source
}
"
)
ENDFOREACH
(
it
)
SET
(
ADDITIONAL_MAKE_CLEAN_FILES
${
ADDITIONAL_MAKE_CLEAN_FILES
}
${
swig_generated_sources
}
)
SET_DIRECTORY_PROPERTIES
(
PROPERTIES
ADDITIONAL_MAKE_CLEAN_FILES
"
${
ADDITIONAL_MAKE_CLEAN_FILES
}
;
${
swig_generated_sources
}
"
)
ADD_LIBRARY
(
${
SWIG_MODULE_
${
name
}
_REAL_NAME
}
MODULE
${
swig_generated_sources
}
...
...
Source/cmGetDirectoryPropertyCommand.cxx
View file @
3031467e
...
...
@@ -95,6 +95,12 @@ bool cmGetDirectoryPropertyCommand::InitialPass(
}
else
{
const
char
*
prop
=
m_Makefile
->
GetProperty
(
args
[
1
].
c_str
());
if
(
prop
)
{
m_Makefile
->
AddDefinition
(
variable
.
c_str
(),
prop
);
return
true
;
}
std
::
string
emsg
=
"Unknown directory property: "
+
args
[
1
];
this
->
SetError
(
emsg
.
c_str
());
return
false
;
...
...
Source/cmLocalUnixMakefileGenerator.cxx
View file @
3031467e
...
...
@@ -646,7 +646,7 @@ void cmLocalUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
}
fout
<<
"
\n\n
"
;
const
char
*
additional_clean_files
=
m_Makefile
->
Get
Definition
(
"ADDITIONAL_MAKE_CLEAN_FILES"
);
m_Makefile
->
Get
Property
(
"ADDITIONAL_MAKE_CLEAN_FILES"
);
if
(
additional_clean_files
&&
strlen
(
additional_clean_files
)
>
0
)
{
std
::
string
arg
=
additional_clean_files
;
...
...
@@ -659,6 +659,7 @@ void cmLocalUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
}
fout
<<
"
\n\n
"
;
}
const
char
*
qt_files
=
m_Makefile
->
GetDefinition
(
"GENERATED_QT_FILES"
);
if
(
qt_files
!=
NULL
&&
strlen
(
m_Makefile
->
GetDefinition
(
"GENERATED_QT_FILES"
))
>
0
)
...
...
Source/cmMakefile.cxx
View file @
3031467e
...
...
@@ -2400,3 +2400,38 @@ bool cmMakefile::CheckInfiniteLoops()
}
return
true
;
}
void
cmMakefile
::
SetProperty
(
const
char
*
prop
,
const
char
*
value
)
{
if
(
!
prop
)
{
return
;
}
if
(
!
value
)
{
value
=
"NOTFOUND"
;
}
m_Properties
[
prop
]
=
value
;
}
const
char
*
cmMakefile
::
GetProperty
(
const
char
*
prop
)
const
{
std
::
map
<
cmStdString
,
cmStdString
>::
const_iterator
i
=
m_Properties
.
find
(
prop
);
if
(
i
!=
m_Properties
.
end
())
{
return
i
->
second
.
c_str
();
}
return
0
;
}
bool
cmMakefile
::
GetPropertyAsBool
(
const
char
*
prop
)
const
{
std
::
map
<
cmStdString
,
cmStdString
>::
const_iterator
i
=
m_Properties
.
find
(
prop
);
if
(
i
!=
m_Properties
.
end
())
{
return
cmSystemTools
::
IsOn
(
i
->
second
.
c_str
());
}
return
false
;
}
Source/cmMakefile.h
View file @
3031467e
...
...
@@ -667,6 +667,11 @@ public:
///! Return true if the directory is preorder.
bool
IsDirectoryPreOrder
(
const
char
*
dir
);
///! Set/Get a property of this directory
void
SetProperty
(
const
char
*
prop
,
const
char
*
value
);
const
char
*
GetProperty
(
const
char
*
prop
)
const
;
bool
GetPropertyAsBool
(
const
char
*
prop
)
const
;
protected:
// add link libraries and directories to the target
void
AddGlobalLinkInformation
(
const
char
*
name
,
cmTarget
&
target
);
...
...
@@ -743,6 +748,8 @@ private:
DefinitionMap
::
key_type
m_TemporaryDefinitionKey
;
cmsys
::
RegularExpression
m_cmDefineRegex
;
std
::
map
<
cmStdString
,
cmStdString
>
m_Properties
;
};
...
...
Source/cmSetDirectoryPropertiesCommand.cxx
View file @
3031467e
...
...
@@ -68,9 +68,15 @@ bool cmSetDirectoryPropertiesCommand::InitialPass(
}
else
{
std
::
string
emsg
=
"Unknown directory property: "
+
args
[
1
];
this
->
SetError
(
emsg
.
c_str
());
return
false
;
if
(
prop
==
"ADDITIONAL_MAKE_CLEAN_FILES"
)
{
// This property is not inherrited
if
(
strcmp
(
m_Makefile
->
GetCurrentDirectory
(),
m_Makefile
->
GetStartDirectory
())
!=
0
)
{
continue
;
}
}
m_Makefile
->
SetProperty
(
prop
.
c_str
(),
value
.
c_str
());
}
}
...
...
Source/cmSetDirectoryPropertiesCommand.h
View file @
3031467e
...
...
@@ -33,6 +33,12 @@ public:
*/
virtual
bool
InitialPass
(
std
::
vector
<
std
::
string
>
const
&
args
);
/**
* This determines if the command gets propagated down
* to makefiles located in subdirectories.
*/
virtual
bool
IsInherited
()
{
return
true
;}
/**
* The name of the command as specified in CMakeList.txt.
*/
...
...
@@ -55,8 +61,10 @@ public:
" SET_DIRECTORY_PROPERTIES(PROPERTIES prop1 value1 prop2 value2)
\n
"
"Set a property for the current directory and subdirectories. If the "
"property is not found, CMake will report an error. The properties "
"include: INCLUDE_DIRECTORIES, LINK_DIRECTORIES, and "
"INCLUDE_REGULAR_EXPRESSION."
;
"include: INCLUDE_DIRECTORIES, LINK_DIRECTORIES, "
"INCLUDE_REGULAR_EXPRESSION, and ADDITIONAL_MAKE_CLEAN_FILES.
\n
"
"ADDITIONAL_MAKE_CLEAN_FILES is a list of files that will be cleaned "
"as a part of
\"
make clean
\"
stage."
;
}
cmTypeMacro
(
cmSetDirectoryPropertiesCommand
,
cmCommand
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment