Merge topic 'cmake-cleanups'
07d44d63
cmake: Remove confusing duplication.ea819b29
cmMakefile: Remove unused method.6ad86c7f
cmMakefile: Remove bad comment.fca2b542
cmMakefile: Internalize setting of CMakeInstance on Properties.7bb4e3db
cmMakefile: Out-of-line Home directory accessors.6241253a
cmake: Out-of-line Home and Start directory methods.0ee3ccb3
cmake: Fix variable name bugs.57dd094e
Use vector, not list for cmCommand storage.6deb43e6
Remove some files which do not need to be in BootstrapCommands.ecdb1b3b
Add some missing includes.04b307b9
cmake: Simplify CommandExists method.0f1f324b
cmake: Rename oddly named variables.275185ac
cmake: Constify GetCommand method.c57f086a
cmake: Don't lower-case a string needlessly.23368c9b
cmake: Use make_pair instead of Foo::value_type.14c70b8c
cmake: out-of-line try compile state methods. ...
This commit is contained in:
commit
92d6179893
|
@ -221,6 +221,8 @@ set(SRCS
|
|||
cmExportSet.cxx
|
||||
cmExportSetMap.h
|
||||
cmExportSetMap.cxx
|
||||
cmExternalMakefileProjectGenerator.cxx
|
||||
cmExternalMakefileProjectGenerator.h
|
||||
cmExtraCodeBlocksGenerator.cxx
|
||||
cmExtraCodeBlocksGenerator.h
|
||||
cmExtraCodeLiteGenerator.cxx
|
||||
|
@ -246,6 +248,8 @@ set(SRCS
|
|||
cmGeneratorExpressionContext.h
|
||||
cmGeneratorExpressionDAGChecker.cxx
|
||||
cmGeneratorExpressionDAGChecker.h
|
||||
cmGeneratorExpressionEvaluationFile.cxx
|
||||
cmGeneratorExpressionEvaluationFile.h
|
||||
cmGeneratorExpressionEvaluator.cxx
|
||||
cmGeneratorExpressionEvaluator.h
|
||||
cmGeneratorExpressionLexer.cxx
|
||||
|
|
|
@ -42,7 +42,6 @@
|
|||
#include "cmEndWhileCommand.cxx"
|
||||
#include "cmExecProgramCommand.cxx"
|
||||
#include "cmExecuteProcessCommand.cxx"
|
||||
#include "cmExternalMakefileProjectGenerator.cxx"
|
||||
#include "cmFindBase.cxx"
|
||||
#include "cmFindCommon.cxx"
|
||||
#include "cmFileCommand.cxx"
|
||||
|
@ -56,7 +55,7 @@
|
|||
#include "cmPathLabel.cxx"
|
||||
#include "cmSearchPath.cxx"
|
||||
|
||||
void GetBootstrapCommands1(std::list<cmCommand*>& commands)
|
||||
void GetBootstrapCommands1(std::vector<cmCommand*>& commands)
|
||||
{
|
||||
commands.push_back(new cmAddCustomCommandCommand);
|
||||
commands.push_back(new cmAddCustomTargetCommand);
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include "cmCommands.h"
|
||||
#include "cmConditionEvaluator.cxx"
|
||||
#include "cmExpandedCommandArgument.cxx"
|
||||
#include "cmGeneratorExpressionEvaluationFile.cxx"
|
||||
#include "cmGetCMakePropertyCommand.cxx"
|
||||
#include "cmGetDirectoryPropertyCommand.cxx"
|
||||
#include "cmGetFilenameComponentCommand.cxx"
|
||||
|
@ -60,7 +59,7 @@
|
|||
#include "cmUnsetCommand.cxx"
|
||||
#include "cmWhileCommand.cxx"
|
||||
|
||||
void GetBootstrapCommands2(std::list<cmCommand*>& commands)
|
||||
void GetBootstrapCommands2(std::vector<cmCommand*>& commands)
|
||||
{
|
||||
commands.push_back(new cmGetCMakePropertyCommand);
|
||||
commands.push_back(new cmGetDirectoryPropertyCommand);
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
@COMMAND_INCLUDES@
|
||||
|
||||
void GetPredefinedCommands(std::list<cmCommand*>& commands)
|
||||
void GetPredefinedCommands(std::vector<cmCommand*>& commands)
|
||||
{
|
||||
@NEW_COMMANDS@
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#define cmCommands_h
|
||||
#include "cmStandardIncludes.h"
|
||||
|
||||
#include <list>
|
||||
#include <vector>
|
||||
|
||||
class cmCommand;
|
||||
/**
|
||||
|
@ -23,9 +23,9 @@ class cmCommand;
|
|||
* It is up to the caller to delete the commands created by this
|
||||
* call.
|
||||
*/
|
||||
void GetBootstrapCommands1(std::list<cmCommand*>& commands);
|
||||
void GetBootstrapCommands2(std::list<cmCommand*>& commands);
|
||||
void GetPredefinedCommands(std::list<cmCommand*>& commands);
|
||||
void GetBootstrapCommands1(std::vector<cmCommand*>& commands);
|
||||
void GetBootstrapCommands2(std::vector<cmCommand*>& commands);
|
||||
void GetPredefinedCommands(std::vector<cmCommand*>& commands);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -11,6 +11,6 @@
|
|||
============================================================================*/
|
||||
#include "cmCommands.h"
|
||||
|
||||
void GetPredefinedCommands(std::list<cmCommand*>&)
|
||||
void GetPredefinedCommands(std::vector<cmCommand*>&)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
#include "cmHexFileConverter.h"
|
||||
#include "cmInstallType.h"
|
||||
#include "cmFileTimeComparison.h"
|
||||
#include "cmLocalGenerator.h"
|
||||
#include "cmGlobalGenerator.h"
|
||||
#include "cmCryptoHash.h"
|
||||
#include "cmAlgorithms.h"
|
||||
|
||||
|
|
|
@ -968,7 +968,13 @@ void cmGlobalGenerator::SetLanguageEnabled(const std::string& l,
|
|||
void cmGlobalGenerator::SetLanguageEnabledFlag(const std::string& l,
|
||||
cmMakefile* mf)
|
||||
{
|
||||
this->LanguageEnabled[l] = true;
|
||||
std::vector<std::string>::iterator it =
|
||||
std::lower_bound(this->LanguageEnabled.begin(),
|
||||
this->LanguageEnabled.end(), l);
|
||||
if (it == this->LanguageEnabled.end() || *it != l)
|
||||
{
|
||||
this->LanguageEnabled.insert(it, l);
|
||||
}
|
||||
|
||||
// Fill the language-to-extension map with the current variable
|
||||
// settings to make sure it is available for the try_compile()
|
||||
|
@ -1079,7 +1085,8 @@ bool cmGlobalGenerator::IgnoreFile(const char* ext) const
|
|||
|
||||
bool cmGlobalGenerator::GetLanguageEnabled(const std::string& l) const
|
||||
{
|
||||
return (this->LanguageEnabled.find(l)!= this->LanguageEnabled.end());
|
||||
return std::binary_search(this->LanguageEnabled.begin(),
|
||||
this->LanguageEnabled.end(), l);
|
||||
}
|
||||
|
||||
void cmGlobalGenerator::ClearEnabledLanguages()
|
||||
|
@ -1958,11 +1965,7 @@ bool cmGlobalGenerator::IsExcluded(cmLocalGenerator* root,
|
|||
void
|
||||
cmGlobalGenerator::GetEnabledLanguages(std::vector<std::string>& lang) const
|
||||
{
|
||||
for(std::map<std::string, bool>::const_iterator i =
|
||||
this->LanguageEnabled.begin(); i != this->LanguageEnabled.end(); ++i)
|
||||
{
|
||||
lang.push_back(i->first);
|
||||
}
|
||||
lang = this->LanguageEnabled;
|
||||
}
|
||||
|
||||
int cmGlobalGenerator::GetLinkerPreference(const std::string& lang) const
|
||||
|
|
|
@ -441,7 +441,7 @@ private:
|
|||
// If you add a new map here, make sure it is copied
|
||||
// in EnableLanguagesFromGenerator
|
||||
std::map<std::string, bool> IgnoreExtensions;
|
||||
std::map<std::string, bool> LanguageEnabled;
|
||||
std::vector<std::string> LanguageEnabled;
|
||||
std::set<std::string> LanguagesReady; // Ready for try_compile
|
||||
std::map<std::string, std::string> OutputExtensions;
|
||||
std::map<std::string, std::string> LanguageToOutputExtension;
|
||||
|
|
|
@ -252,7 +252,6 @@ void cmLocalGenerator::SetGlobalGenerator(cmGlobalGenerator *gg)
|
|||
this->Makefile->SetLocalGenerator(this);
|
||||
|
||||
// setup the home directories
|
||||
this->Makefile->GetProperties().SetCMakeInstance(gg->GetCMakeInstance());
|
||||
this->Makefile->SetHomeDirectory(
|
||||
gg->GetCMakeInstance()->GetHomeDirectory());
|
||||
this->Makefile->SetHomeOutputDirectory(
|
||||
|
|
|
@ -741,6 +741,7 @@ void cmMakefile::SetLocalGenerator(cmLocalGenerator* lg)
|
|||
this->AddSourceGroup("Object Files", "\\.(lo|o|obj)$");
|
||||
#endif
|
||||
|
||||
this->Properties.SetCMakeInstance(this->GetCMakeInstance());
|
||||
this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused();
|
||||
this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars();
|
||||
}
|
||||
|
@ -1657,7 +1658,6 @@ void cmMakefile::InitializeFromParent()
|
|||
|
||||
void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2)
|
||||
{
|
||||
// copy our variables from the child makefile
|
||||
lg2->GetMakefile()->InitializeFromParent();
|
||||
lg2->GetMakefile()->MakeStartDirectoriesCurrent();
|
||||
if (this->GetCMakeInstance()->GetDebugOutput())
|
||||
|
@ -1676,33 +1676,6 @@ void cmMakefile::ConfigureSubDirectory(cmLocalGenerator *lg2)
|
|||
}
|
||||
}
|
||||
|
||||
void cmMakefile::AddSubDirectory(const std::string& sub,
|
||||
bool excludeFromAll)
|
||||
{
|
||||
// the source path must be made full if it isn't already
|
||||
std::string srcPath = sub;
|
||||
if (!cmSystemTools::FileIsFullPath(srcPath.c_str()))
|
||||
{
|
||||
srcPath = this->GetCurrentDirectory();
|
||||
srcPath += "/";
|
||||
srcPath += sub;
|
||||
}
|
||||
|
||||
// binary path must be made full if it isn't already
|
||||
std::string binPath = sub;
|
||||
if (!cmSystemTools::FileIsFullPath(binPath.c_str()))
|
||||
{
|
||||
binPath = this->GetCurrentOutputDirectory();
|
||||
binPath += "/";
|
||||
binPath += sub;
|
||||
}
|
||||
|
||||
|
||||
this->AddSubDirectory(srcPath, binPath,
|
||||
excludeFromAll, false);
|
||||
}
|
||||
|
||||
|
||||
void cmMakefile::AddSubDirectory(const std::string& srcPath,
|
||||
const std::string& binPath,
|
||||
bool excludeFromAll,
|
||||
|
@ -3461,6 +3434,11 @@ cmMakefile::LexicalPushPop::~LexicalPushPop()
|
|||
this->Makefile->PopFunctionBlockerBarrier(this->ReportError);
|
||||
}
|
||||
|
||||
const char* cmMakefile::GetHomeDirectory() const
|
||||
{
|
||||
return this->cmHomeDirectory.c_str();
|
||||
}
|
||||
|
||||
void cmMakefile::SetHomeDirectory(const std::string& dir)
|
||||
{
|
||||
this->cmHomeDirectory = dir;
|
||||
|
@ -3472,6 +3450,11 @@ void cmMakefile::SetHomeDirectory(const std::string& dir)
|
|||
}
|
||||
}
|
||||
|
||||
const char* cmMakefile::GetHomeOutputDirectory() const
|
||||
{
|
||||
return this->HomeOutputDirectory.c_str();
|
||||
}
|
||||
|
||||
void cmMakefile::SetHomeOutputDirectory(const std::string& lib)
|
||||
{
|
||||
this->HomeOutputDirectory = lib;
|
||||
|
|
|
@ -281,7 +281,6 @@ public:
|
|||
/**
|
||||
* Add a subdirectory to the build.
|
||||
*/
|
||||
void AddSubDirectory(const std::string&, bool excludeFromAll=false);
|
||||
void AddSubDirectory(const std::string& fullSrcDir,
|
||||
const std::string& fullBinDir,
|
||||
bool excludeFromAll,
|
||||
|
@ -438,15 +437,9 @@ public:
|
|||
* and going up until it reaches the HomeDirectory.
|
||||
*/
|
||||
void SetHomeDirectory(const std::string& dir);
|
||||
const char* GetHomeDirectory() const
|
||||
{
|
||||
return this->cmHomeDirectory.c_str();
|
||||
}
|
||||
const char* GetHomeDirectory() const;
|
||||
void SetHomeOutputDirectory(const std::string& lib);
|
||||
const char* GetHomeOutputDirectory() const
|
||||
{
|
||||
return this->HomeOutputDirectory.c_str();
|
||||
}
|
||||
const char* GetHomeOutputDirectory() const;
|
||||
//@}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1157,7 +1157,7 @@ cmTarget::LinkLibraryType cmTarget::ComputeLinkType(
|
|||
}
|
||||
|
||||
// Get the list of configurations considered to be DEBUG.
|
||||
std::vector<std::string> const& debugConfigs =
|
||||
std::vector<std::string> debugConfigs =
|
||||
this->Makefile->GetCMakeInstance()->GetDebugConfigs();
|
||||
|
||||
// Check if any entry in the list matches this configuration.
|
||||
|
@ -1216,7 +1216,7 @@ std::string cmTarget::GetDebugGeneratorExpressions(const std::string &value,
|
|||
}
|
||||
|
||||
// Get the list of configurations considered to be DEBUG.
|
||||
std::vector<std::string> const& debugConfigs =
|
||||
std::vector<std::string> debugConfigs =
|
||||
this->Makefile->GetCMakeInstance()->GetDebugConfigs();
|
||||
|
||||
std::string configString = "$<CONFIG:" + debugConfigs[0] + ">";
|
||||
|
|
|
@ -467,7 +467,7 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const std::string& lib,
|
|||
}
|
||||
|
||||
// Get the list of configurations considered to be DEBUG.
|
||||
std::vector<std::string> const& debugConfigs =
|
||||
std::vector<std::string> debugConfigs =
|
||||
this->Makefile->GetCMakeInstance()->GetDebugConfigs();
|
||||
std::string prop;
|
||||
|
||||
|
|
137
Source/cmake.cxx
137
Source/cmake.cxx
|
@ -187,7 +187,6 @@ cmake::~cmake()
|
|||
void cmake::InitializeProperties()
|
||||
{
|
||||
this->Properties.clear();
|
||||
this->Properties.SetCMakeInstance(this);
|
||||
this->PropertyDefinitions.clear();
|
||||
|
||||
// initialize properties
|
||||
|
@ -223,20 +222,19 @@ void cmake::CleanupCommandsAndMacros()
|
|||
|
||||
bool cmake::CommandExists(const std::string& name) const
|
||||
{
|
||||
std::string sName = cmSystemTools::LowerCase(name);
|
||||
return (this->Commands.find(sName) != this->Commands.end());
|
||||
return this->GetCommand(name) ? true : false;
|
||||
}
|
||||
|
||||
cmCommand *cmake::GetCommand(const std::string& name)
|
||||
cmCommand *cmake::GetCommand(const std::string& name) const
|
||||
{
|
||||
cmCommand* rm = 0;
|
||||
cmCommand* command = 0;
|
||||
std::string sName = cmSystemTools::LowerCase(name);
|
||||
RegisteredCommandsMap::iterator pos = this->Commands.find(sName);
|
||||
RegisteredCommandsMap::const_iterator pos = this->Commands.find(sName);
|
||||
if (pos != this->Commands.end())
|
||||
{
|
||||
rm = (*pos).second;
|
||||
command = (*pos).second;
|
||||
}
|
||||
return rm;
|
||||
return command;
|
||||
}
|
||||
|
||||
void cmake::RenameCommand(const std::string& oldName,
|
||||
|
@ -244,12 +242,12 @@ void cmake::RenameCommand(const std::string& oldName,
|
|||
{
|
||||
// if the command already exists, free the old one
|
||||
std::string sOldName = cmSystemTools::LowerCase(oldName);
|
||||
std::string sNewName = cmSystemTools::LowerCase(newName);
|
||||
RegisteredCommandsMap::iterator pos = this->Commands.find(sOldName);
|
||||
if ( pos == this->Commands.end() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
std::string sNewName = cmSystemTools::LowerCase(newName);
|
||||
cmCommand* cmd = pos->second;
|
||||
|
||||
pos = this->Commands.find(sNewName);
|
||||
|
@ -258,7 +256,7 @@ void cmake::RenameCommand(const std::string& oldName,
|
|||
delete pos->second;
|
||||
this->Commands.erase(pos);
|
||||
}
|
||||
this->Commands.insert(RegisteredCommandsMap::value_type(sNewName, cmd));
|
||||
this->Commands.insert(std::make_pair(sNewName, cmd));
|
||||
pos = this->Commands.find(sOldName);
|
||||
this->Commands.erase(pos);
|
||||
}
|
||||
|
@ -274,9 +272,9 @@ void cmake::RemoveCommand(const std::string& name)
|
|||
}
|
||||
}
|
||||
|
||||
void cmake::AddCommand(cmCommand* wg)
|
||||
void cmake::AddCommand(cmCommand* command)
|
||||
{
|
||||
std::string name = cmSystemTools::LowerCase(wg->GetName());
|
||||
std::string name = cmSystemTools::LowerCase(command->GetName());
|
||||
// if the command already exists, free the old one
|
||||
RegisteredCommandsMap::iterator pos = this->Commands.find(name);
|
||||
if (pos != this->Commands.end())
|
||||
|
@ -284,16 +282,16 @@ void cmake::AddCommand(cmCommand* wg)
|
|||
delete pos->second;
|
||||
this->Commands.erase(pos);
|
||||
}
|
||||
this->Commands.insert( RegisteredCommandsMap::value_type(name, wg));
|
||||
this->Commands.insert(std::make_pair(name, command));
|
||||
}
|
||||
|
||||
|
||||
void cmake::RemoveUnscriptableCommands()
|
||||
{
|
||||
std::vector<std::string> unscriptableCommands;
|
||||
cmake::RegisteredCommandsMap* commands = this->GetCommands();
|
||||
for (cmake::RegisteredCommandsMap::const_iterator pos = commands->begin();
|
||||
pos != commands->end();
|
||||
for (cmake::RegisteredCommandsMap::const_iterator
|
||||
pos = this->Commands.begin();
|
||||
pos != this->Commands.end();
|
||||
++pos)
|
||||
{
|
||||
if (!pos->second->IsScriptable())
|
||||
|
@ -847,12 +845,8 @@ void cmake::SetArgs(const std::vector<std::string>& args,
|
|||
{
|
||||
this->SetHomeOutputDirectory
|
||||
(cmSystemTools::GetCurrentWorkingDirectory());
|
||||
this->SetStartOutputDirectory
|
||||
(cmSystemTools::GetCurrentWorkingDirectory());
|
||||
this->SetHomeDirectory
|
||||
(cmSystemTools::GetCurrentWorkingDirectory());
|
||||
this->SetStartDirectory
|
||||
(cmSystemTools::GetCurrentWorkingDirectory());
|
||||
}
|
||||
|
||||
this->SetStartDirectory(this->GetHomeDirectory());
|
||||
|
@ -1116,12 +1110,44 @@ void cmake::SetHomeDirectory(const std::string& dir)
|
|||
cmSystemTools::ConvertToUnixSlashes(this->cmHomeDirectory);
|
||||
}
|
||||
|
||||
void cmake::SetHomeOutputDirectory(const std::string& lib)
|
||||
const char* cmake::GetHomeDirectory() const
|
||||
{
|
||||
this->HomeOutputDirectory = lib;
|
||||
return this->cmHomeDirectory.c_str();
|
||||
}
|
||||
|
||||
void cmake::SetHomeOutputDirectory(const std::string& dir)
|
||||
{
|
||||
this->HomeOutputDirectory = dir;
|
||||
cmSystemTools::ConvertToUnixSlashes(this->HomeOutputDirectory);
|
||||
}
|
||||
|
||||
const char* cmake::GetHomeOutputDirectory() const
|
||||
{
|
||||
return this->HomeOutputDirectory.c_str();
|
||||
}
|
||||
|
||||
const char* cmake::GetStartDirectory() const
|
||||
{
|
||||
return this->cmStartDirectory.c_str();
|
||||
}
|
||||
|
||||
void cmake::SetStartDirectory(const std::string& dir)
|
||||
{
|
||||
this->cmStartDirectory = dir;
|
||||
cmSystemTools::ConvertToUnixSlashes(this->cmStartDirectory);
|
||||
}
|
||||
|
||||
const char* cmake::GetStartOutputDirectory() const
|
||||
{
|
||||
return this->StartOutputDirectory.c_str();
|
||||
}
|
||||
|
||||
void cmake::SetStartOutputDirectory(const std::string& dir)
|
||||
{
|
||||
this->StartOutputDirectory = dir;
|
||||
cmSystemTools::ConvertToUnixSlashes(this->StartOutputDirectory);
|
||||
}
|
||||
|
||||
void cmake::SetGlobalGenerator(cmGlobalGenerator *gg)
|
||||
{
|
||||
if(!gg)
|
||||
|
@ -1533,11 +1559,7 @@ int cmake::ActualConfigure()
|
|||
if (!this->InTryCompile)
|
||||
{
|
||||
this->GlobalGenerator->ClearEnabledLanguages();
|
||||
}
|
||||
|
||||
// Truncate log files
|
||||
if (!this->InTryCompile)
|
||||
{
|
||||
this->TruncateOutputLog("CMakeOutput.log");
|
||||
this->TruncateOutputLog("CMakeError.log");
|
||||
}
|
||||
|
@ -1812,11 +1834,11 @@ const char* cmake::GetCacheDefinition(const std::string& name) const
|
|||
|
||||
void cmake::AddDefaultCommands()
|
||||
{
|
||||
std::list<cmCommand*> commands;
|
||||
std::vector<cmCommand*> commands;
|
||||
GetBootstrapCommands1(commands);
|
||||
GetBootstrapCommands2(commands);
|
||||
GetPredefinedCommands(commands);
|
||||
for(std::list<cmCommand*>::iterator i = commands.begin();
|
||||
for(std::vector<cmCommand*>::iterator i = commands.begin();
|
||||
i != commands.end(); ++i)
|
||||
{
|
||||
this->AddCommand(*i);
|
||||
|
@ -1942,6 +1964,16 @@ void cmake::UpdateProgress(const char *msg, float prog)
|
|||
}
|
||||
}
|
||||
|
||||
bool cmake::GetIsInTryCompile() const
|
||||
{
|
||||
return this->InTryCompile;
|
||||
}
|
||||
|
||||
void cmake::SetIsInTryCompile(bool b)
|
||||
{
|
||||
this->InTryCompile = b;
|
||||
}
|
||||
|
||||
void cmake::GetGeneratorDocumentation(std::vector<cmDocumentationEntry>& v)
|
||||
{
|
||||
for(RegisteredGeneratorsVector::const_iterator i =
|
||||
|
@ -2298,24 +2330,12 @@ bool cmake::IsPropertyChained(const std::string& name,
|
|||
|
||||
void cmake::SetProperty(const std::string& prop, const char* value)
|
||||
{
|
||||
// Special hook to invalidate cached value.
|
||||
if(prop == "DEBUG_CONFIGURATIONS")
|
||||
{
|
||||
this->DebugConfigs.clear();
|
||||
}
|
||||
|
||||
this->Properties.SetProperty(prop, value, cmProperty::GLOBAL);
|
||||
}
|
||||
|
||||
void cmake::AppendProperty(const std::string& prop,
|
||||
const char* value, bool asString)
|
||||
{
|
||||
// Special hook to invalidate cached value.
|
||||
if(prop == "DEBUG_CONFIGURATIONS")
|
||||
{
|
||||
this->DebugConfigs.clear();
|
||||
}
|
||||
|
||||
this->Properties.AppendProperty(prop, value, cmProperty::GLOBAL, asString);
|
||||
}
|
||||
|
||||
|
@ -2338,8 +2358,8 @@ const char *cmake::GetProperty(const std::string& prop,
|
|||
else if ( prop == "COMMANDS" )
|
||||
{
|
||||
cmake::RegisteredCommandsMap::iterator cmds
|
||||
= this->GetCommands()->begin();
|
||||
for (unsigned int cc=0 ; cmds != this->GetCommands()->end(); ++ cmds )
|
||||
= this->Commands.begin();
|
||||
for (unsigned int cc=0 ; cmds != this->Commands.end(); ++ cmds )
|
||||
{
|
||||
if ( cc > 0 )
|
||||
{
|
||||
|
@ -2775,27 +2795,24 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text,
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
std::vector<std::string> const& cmake::GetDebugConfigs()
|
||||
std::vector<std::string> cmake::GetDebugConfigs()
|
||||
{
|
||||
// Compute on-demand.
|
||||
if(this->DebugConfigs.empty())
|
||||
std::vector<std::string> configs;
|
||||
if(const char* config_list = this->GetProperty("DEBUG_CONFIGURATIONS"))
|
||||
{
|
||||
if(const char* config_list = this->GetProperty("DEBUG_CONFIGURATIONS"))
|
||||
{
|
||||
// Expand the specified list and convert to upper-case.
|
||||
cmSystemTools::ExpandListArgument(config_list, this->DebugConfigs);
|
||||
std::transform(this->DebugConfigs.begin(),
|
||||
this->DebugConfigs.end(),
|
||||
this->DebugConfigs.begin(),
|
||||
cmSystemTools::UpperCase);
|
||||
}
|
||||
// If no configurations were specified, use a default list.
|
||||
if(this->DebugConfigs.empty())
|
||||
{
|
||||
this->DebugConfigs.push_back("DEBUG");
|
||||
}
|
||||
// Expand the specified list and convert to upper-case.
|
||||
cmSystemTools::ExpandListArgument(config_list, configs);
|
||||
std::transform(configs.begin(),
|
||||
configs.end(),
|
||||
configs.begin(),
|
||||
cmSystemTools::UpperCase);
|
||||
}
|
||||
return this->DebugConfigs;
|
||||
// If no configurations were specified, use a default list.
|
||||
if(configs.empty())
|
||||
{
|
||||
configs.push_back("DEBUG");
|
||||
}
|
||||
return configs;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -113,15 +113,9 @@ class cmake
|
|||
* and going up until it reaches the HomeDirectory.
|
||||
*/
|
||||
void SetHomeDirectory(const std::string& dir);
|
||||
const char* GetHomeDirectory() const
|
||||
{
|
||||
return this->cmHomeDirectory.c_str();
|
||||
}
|
||||
void SetHomeOutputDirectory(const std::string& lib);
|
||||
const char* GetHomeOutputDirectory() const
|
||||
{
|
||||
return this->HomeOutputDirectory.c_str();
|
||||
}
|
||||
const char* GetHomeDirectory() const;
|
||||
void SetHomeOutputDirectory(const std::string& dir);
|
||||
const char* GetHomeOutputDirectory() const;
|
||||
//@}
|
||||
|
||||
//@{
|
||||
|
@ -132,24 +126,10 @@ class cmake
|
|||
* recursing up the tree starting at the StartDirectory and going up until
|
||||
* it reaches the HomeDirectory.
|
||||
*/
|
||||
void SetStartDirectory(const std::string& dir)
|
||||
{
|
||||
this->cmStartDirectory = dir;
|
||||
cmSystemTools::ConvertToUnixSlashes(this->cmStartDirectory);
|
||||
}
|
||||
const char* GetStartDirectory() const
|
||||
{
|
||||
return this->cmStartDirectory.c_str();
|
||||
}
|
||||
void SetStartOutputDirectory(const std::string& lib)
|
||||
{
|
||||
this->StartOutputDirectory = lib;
|
||||
cmSystemTools::ConvertToUnixSlashes(this->StartOutputDirectory);
|
||||
}
|
||||
const char* GetStartOutputDirectory() const
|
||||
{
|
||||
return this->StartOutputDirectory.c_str();
|
||||
}
|
||||
void SetStartDirectory(const std::string& dir);
|
||||
const char* GetStartDirectory() const;
|
||||
void SetStartOutputDirectory(const std::string& dir);
|
||||
const char* GetStartOutputDirectory() const;
|
||||
//@}
|
||||
|
||||
/**
|
||||
|
@ -247,10 +227,7 @@ class cmake
|
|||
/**
|
||||
* Get a command by its name
|
||||
*/
|
||||
cmCommand *GetCommand(const std::string& name);
|
||||
|
||||
/** Get list of all commands */
|
||||
RegisteredCommandsMap* GetCommands() { return &this->Commands; }
|
||||
cmCommand *GetCommand(const std::string& name) const;
|
||||
|
||||
/** Check if a command exists. */
|
||||
bool CommandExists(const std::string& name) const;
|
||||
|
@ -260,10 +237,8 @@ class cmake
|
|||
bool directoriesSetBefore = false);
|
||||
|
||||
///! Is this cmake running as a result of a TRY_COMPILE command
|
||||
bool GetIsInTryCompile() { return this->InTryCompile; }
|
||||
|
||||
///! Is this cmake running as a result of a TRY_COMPILE command
|
||||
void SetIsInTryCompile(bool i) { this->InTryCompile = i; }
|
||||
bool GetIsInTryCompile() const;
|
||||
void SetIsInTryCompile(bool b);
|
||||
|
||||
///! Parse command line arguments that might set cache values
|
||||
bool SetCacheArgs(const std::vector<std::string>&);
|
||||
|
@ -362,7 +337,7 @@ class cmake
|
|||
|
||||
/** Get the list of configurations (in upper case) considered to be
|
||||
debugging configurations.*/
|
||||
std::vector<std::string> const& GetDebugConfigs();
|
||||
std::vector<std::string> GetDebugConfigs();
|
||||
|
||||
void SetCMakeEditCommand(std::string const& s)
|
||||
{ this->CMakeEditCommand = s; }
|
||||
|
@ -472,7 +447,6 @@ private:
|
|||
bool DebugTryCompile;
|
||||
cmFileTimeComparison* FileComparison;
|
||||
std::string GraphVizFile;
|
||||
std::vector<std::string> DebugConfigs;
|
||||
InstalledFilesMap InstalledFiles;
|
||||
|
||||
void UpdateConversionPathTable();
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
CONFIGS:
|
||||
IFACE1:\$<\$<CONFIG:DEBUG>:external1>
|
||||
CONFIGS:EXTRA
|
||||
IFACE1:\$<\$<CONFIG:DEBUG>:external1>
|
||||
IFACE1:\$<\$<CONFIG:DEBUG>:external1>;\$<\$<CONFIG:EXTRA>:external2>
|
||||
CONFIGS:NEW;CONFIGS
|
||||
IFACE1:\$<\$<CONFIG:DEBUG>:external1>;\$<\$<CONFIG:EXTRA>:external2>
|
||||
IFACE1:\$<\$<CONFIG:DEBUG>:external1>;\$<\$<CONFIG:EXTRA>:external2>;\$<\$<OR:\$<CONFIG:NEW>,\$<CONFIG:CONFIGS>>:external3>
|
||||
CONFIGS:NEW;CONFIGS;EXTRA
|
||||
IFACE1:\$<\$<CONFIG:DEBUG>:external1>;\$<\$<CONFIG:EXTRA>:external2>;\$<\$<OR:\$<CONFIG:NEW>,\$<CONFIG:CONFIGS>>:external3>
|
||||
IFACE1:\$<\$<CONFIG:DEBUG>:external1>;\$<\$<CONFIG:EXTRA>:external2>;\$<\$<OR:\$<CONFIG:NEW>,\$<CONFIG:CONFIGS>>:external3>;\$<\$<OR:\$<CONFIG:NEW>,\$<CONFIG:CONFIGS>,\$<CONFIG:EXTRA>>:external4>
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
enable_language(CXX)
|
||||
|
||||
get_property(configs GLOBAL PROPERTY DEBUG_CONFIGURATIONS)
|
||||
message("CONFIGS:${configs}")
|
||||
|
||||
add_library(iface1 INTERFACE)
|
||||
target_link_libraries(iface1 INTERFACE debug external1)
|
||||
|
||||
get_property(tgt_iface TARGET iface1 PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||
message("IFACE1:${tgt_iface}")
|
||||
|
||||
set_property(GLOBAL APPEND PROPERTY DEBUG_CONFIGURATIONS EXTRA)
|
||||
get_property(configs GLOBAL PROPERTY DEBUG_CONFIGURATIONS)
|
||||
message("CONFIGS:${configs}")
|
||||
|
||||
get_property(tgt_iface TARGET iface1 PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||
message("IFACE1:${tgt_iface}")
|
||||
target_link_libraries(iface1 INTERFACE debug external2)
|
||||
get_property(tgt_iface TARGET iface1 PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||
message("IFACE1:${tgt_iface}")
|
||||
|
||||
set_property(GLOBAL PROPERTY DEBUG_CONFIGURATIONS NEW CONFIGS)
|
||||
get_property(configs GLOBAL PROPERTY DEBUG_CONFIGURATIONS)
|
||||
message("CONFIGS:${configs}")
|
||||
|
||||
get_property(tgt_iface TARGET iface1 PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||
message("IFACE1:${tgt_iface}")
|
||||
target_link_libraries(iface1 INTERFACE debug external3)
|
||||
get_property(tgt_iface TARGET iface1 PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||
message("IFACE1:${tgt_iface}")
|
||||
|
||||
set_property(GLOBAL APPEND PROPERTY DEBUG_CONFIGURATIONS EXTRA)
|
||||
get_property(configs GLOBAL PROPERTY DEBUG_CONFIGURATIONS)
|
||||
message("CONFIGS:${configs}")
|
||||
|
||||
get_property(tgt_iface TARGET iface1 PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||
message("IFACE1:${tgt_iface}")
|
||||
target_link_libraries(iface1 INTERFACE debug external4)
|
||||
get_property(tgt_iface TARGET iface1 PROPERTY INTERFACE_LINK_LIBRARIES)
|
||||
message("IFACE1:${tgt_iface}")
|
|
@ -7,3 +7,4 @@ run_cmake(install_properties)
|
|||
run_cmake(source_properties)
|
||||
run_cmake(target_properties)
|
||||
run_cmake(test_properties)
|
||||
run_cmake(DebugConfigurations)
|
||||
|
|
|
@ -264,7 +264,8 @@ CMAKE_CXX_SOURCES="\
|
|||
cmExportTryCompileFileGenerator \
|
||||
cmExportSet \
|
||||
cmExportSetMap \
|
||||
cmInstallDirectoryGenerator \
|
||||
cmExternalMakefileProjectGenerator \
|
||||
cmGeneratorExpressionEvaluationFile \
|
||||
cmGeneratedFileStream \
|
||||
cmGeneratorTarget \
|
||||
cmGeneratorExpressionContext \
|
||||
|
@ -275,6 +276,7 @@ CMAKE_CXX_SOURCES="\
|
|||
cmGeneratorExpressionParser \
|
||||
cmGeneratorExpression \
|
||||
cmGlobalGenerator \
|
||||
cmInstallDirectoryGenerator \
|
||||
cmLocalGenerator \
|
||||
cmInstalledFile \
|
||||
cmInstallGenerator \
|
||||
|
|
Loading…
Reference in New Issue