Commit f990777a authored by Ken Martin's avatar Ken Martin
Browse files

added FORCE option

parent cb5763a4
......@@ -39,6 +39,7 @@ bool cmSetCommand::InitialPass(std::vector<std::string> const& args)
const char* variable = args[0].c_str(); // VAR is always first
std::string value; // optional
bool cache = false; // optional
bool force = false; // optional
cmCacheManager::CacheEntryType type = cmCacheManager::STRING; // required if cache
const char* docstring = 0; // required if cache
std::string::size_type cacheStart = 0;
......@@ -60,19 +61,24 @@ bool cmSetCommand::InitialPass(std::vector<std::string> const& args)
}
}
// look for FORCE argument
if (args.size() > 4 && args[args.size()-1] == "FORCE")
{
force = true;
}
if(args.size() == 2)
{
// SET (VAR value )
value= args[1];
// SET (VAR value )
value= args[1];
}
else if(args.size() == 4)
else if(args.size() == 4 + (force ? 1 : 0))
{
// SET (VAR CACHE TYPE "doc String")
cache = true;
cacheStart = 1;
}
else if(args.size() == 5)
else if(args.size() == 5 + (force ? 1 : 0))
{
// SET (VAR value CACHE TYPE "doc string")
cache = true;
......@@ -116,7 +122,7 @@ bool cmSetCommand::InitialPass(std::vector<std::string> const& args)
// is already in the cache and the type is not internal
// then leave now without setting any definitions in the cache
// or the makefile
if(cache && type != cmCacheManager::INTERNAL)
if(cache && type != cmCacheManager::INTERNAL && !force)
{
return true;
}
......
......@@ -67,14 +67,15 @@ public:
virtual const char* GetFullDocumentation()
{
return
"SET(VAR [VALUE] [CACHE TYPE DOCSTRING])\n"
"SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])\n"
"Within CMAKE sets VAR to the value VALUE. VALUE is expanded before VAR "
"is set to it. If CACHE is present, then the VAR is put in the cache."
" TYPE and DOCSTRING are required. TYPE may be BOOL, PATH, FILEPATH, STRING, INTERNAL, "
"or STATIC. If TYPE is INTERNAL, then the "
" VALUE is Always written into the cache, replacing any values "
"existing in the cache. If it is not a CACHE VAR, then this always "
"writes into the current makefile.\n"
"writes into the current makefile. The FORCE option will overwrite"
"the CACHE value removing any changes from the USER.\n"
"An optional syntax is SET(VAR VALUE1 ... VALUEN).\n"
"In this case VAR is set to a ; separated list of values.";
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment