diff options
author | Brad King <brad.king@kitware.com> | 2016-11-01 13:14:21 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2016-11-01 13:14:21 (GMT) |
commit | 9c6cf7fcac1f4f23ec21aeb322026d4f422760cc (patch) | |
tree | fa0f021513b32f72cf7118bce60bfcdada1a36d4 /Source/cmExtraSublimeTextGenerator.cxx | |
parent | ba28e0405e4a41158395323ace1dd0075934233e (diff) | |
parent | 95805d725d49af665c2254f97effbe8b812239ea (diff) | |
download | CMake-9c6cf7fcac1f4f23ec21aeb322026d4f422760cc.zip CMake-9c6cf7fcac1f4f23ec21aeb322026d4f422760cc.tar.gz CMake-9c6cf7fcac1f4f23ec21aeb322026d4f422760cc.tar.bz2 |
Merge topic 'st2-env-vars-variable'
95805d72 Sublime: Add option to specify env vars for the .sublime-project
Diffstat (limited to 'Source/cmExtraSublimeTextGenerator.cxx')
-rw-r--r-- | Source/cmExtraSublimeTextGenerator.cxx | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/Source/cmExtraSublimeTextGenerator.cxx b/Source/cmExtraSublimeTextGenerator.cxx index f46019e..ff5036f 100644 --- a/Source/cmExtraSublimeTextGenerator.cxx +++ b/Source/cmExtraSublimeTextGenerator.cxx @@ -62,6 +62,8 @@ void cmExtraSublimeTextGenerator::Generate() { this->ExcludeBuildFolder = this->GlobalGenerator->GlobalSettingIsOn( "CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE"); + this->EnvSettings = this->GlobalGenerator->GetSafeGlobalSetting( + "CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS"); // for each sub project in the project create a sublime text 2 project for (std::map<std::string, std::vector<cmLocalGenerator*> >::const_iterator @@ -130,7 +132,37 @@ void cmExtraSublimeTextGenerator::CreateNewProjectFile( // End of build_systems fout << "\n\t]"; - fout << "\n\t}"; + std::string systemName = mf->GetSafeDefinition("CMAKE_SYSTEM_NAME"); + std::vector<std::string> tokens; + cmSystemTools::ExpandListArgument(this->EnvSettings, tokens); + + if (!this->EnvSettings.empty()) { + fout << ","; + fout << "\n\t\"env\":"; + fout << "\n\t{"; + fout << "\n\t\t" << systemName << ":"; + fout << "\n\t\t{"; + for (std::vector<std::string>::iterator i = tokens.begin(); + i != tokens.end(); ++i) { + size_t const pos = i->find_first_of('='); + + if (pos != std::string::npos) { + std::string varName = i->substr(0, pos); + std::string varValue = i->substr(pos + 1); + + fout << "\n\t\t\t\"" << varName << "\":\"" << varValue << "\""; + } else { + std::ostringstream e; + e << "Could not parse Env Vars specified in " + "\"CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS\"" + << ", corrupted string " << *i; + mf->IssueMessage(cmake::FATAL_ERROR, e.str()); + } + } + fout << "\n\t\t}"; + fout << "\n\t}"; + } + fout << "\n}"; } void cmExtraSublimeTextGenerator::AppendAllTargets( |