|
@@ -14,6 +14,8 @@
|
|
|
#include "cmMakefile.h"
|
|
#include "cmMakefile.h"
|
|
|
#include "cmTarget.h"
|
|
#include "cmTarget.h"
|
|
|
|
|
|
|
|
|
|
+#include <cmsys/String.h>
|
|
|
|
|
+
|
|
|
//----------------------------------------------------------------------------
|
|
//----------------------------------------------------------------------------
|
|
|
cmGeneratorExpression::cmGeneratorExpression(
|
|
cmGeneratorExpression::cmGeneratorExpression(
|
|
|
cmMakefile* mf, const char* config,
|
|
cmMakefile* mf, const char* config,
|
|
@@ -25,6 +27,7 @@ cmGeneratorExpression::cmGeneratorExpression(
|
|
|
"_FILE(|_NAME|_DIR):" // Filename component.
|
|
"_FILE(|_NAME|_DIR):" // Filename component.
|
|
|
"([A-Za-z0-9_.-]+)" // Target name.
|
|
"([A-Za-z0-9_.-]+)" // Target name.
|
|
|
">$");
|
|
">$");
|
|
|
|
|
+ this->TestConfig.compile("^\\$<CONFIG:([A-Za-z0-9_]*)>$");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
//----------------------------------------------------------------------------
|
|
@@ -162,6 +165,12 @@ bool cmGeneratorExpression::Evaluate(const char* expr, std::string& result)
|
|
|
{
|
|
{
|
|
|
return cmGeneratorExpressionBool(expr+5, result, "OR", "0", "1");
|
|
return cmGeneratorExpressionBool(expr+5, result, "OR", "0", "1");
|
|
|
}
|
|
}
|
|
|
|
|
+ else if(this->TestConfig.find(expr))
|
|
|
|
|
+ {
|
|
|
|
|
+ result = cmsysString_strcasecmp(this->TestConfig.match(1).c_str(),
|
|
|
|
|
+ this->Config? this->Config:"") == 0
|
|
|
|
|
+ ? "1":"0";
|
|
|
|
|
+ }
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
result = "Expression syntax not recognized.";
|
|
result = "Expression syntax not recognized.";
|