Added a CMAKE_SUBLIMECLANG_DISABLED variable that disables SublimeClang.

If the CMAKE_SUBLIMECLANG_DISABLED variable is on then SublimeClang
is disabled in the generated project file. This is useful in large
projects where SublimeClang might run slowly or perform poorly.
This commit is contained in:
Morné Chamberlain 2012-10-14 14:06:20 +02:00
parent 9657acb55a
commit 44f35f7824
2 changed files with 22 additions and 1 deletions

View File

@ -896,6 +896,15 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
" script, it may get fatal error messages from the script.",false,
"Variables That Change Behavior");
cm->DefineProperty
("CMAKE_SUBLIMECLANG_DISABLED", cmProperty::VARIABLE,
"Used by the Sublime Text 2 generator to disable SublimeClang in "
"generated project files.",
"For very large projects SublimeClang might run slowly. Set this variable"
" to TRUE to instruct the Sublime Text 2 generator to disable "
" SublimeClang in the generated project files.", false,
"Variables That Change Behavior");
// Variables defined by CMake that describe the system
cm->DefineProperty

View File

@ -47,7 +47,7 @@ void cmExtraSublimeTextGenerator
"Project files for Sublime Text 2 will be created in the top directory "
"and in every subdirectory which features a CMakeLists.txt file "
"containing a PROJECT() call. "
"Additionally a hierarchy of makefiles is generated into the "
"Additionally Makefiles (or build.ninja files) are generated into the "
"build tree. The appropriate make program can build the project through "
"the default make target. A \"make install\" target is also provided.";
}
@ -142,6 +142,18 @@ void cmExtraSublimeTextGenerator
// Write the settings section with sublimeclang options
fout << ",\n\t\"settings\":\n\t{\n\t";
// Check if the CMAKE_SUBLIMECLANG_DISABLED flag has been set. If it has
// disable sublimeclang for this project.
const char* sublimeclangDisabledValue =
lgs[0]->GetMakefile()->GetSafeDefinition("CMAKE_SUBLIMECLANG_DISABLED");
bool sublimeclangEnabled = cmSystemTools::IsOff(sublimeclangDisabledValue);
// Per project sublimeclang settings override default and user settings,
// so we only write the sublimeclang_enabled setting to the project file
// if it is set to be disabled.
if (!sublimeclangEnabled)
{
fout << "\t\"sublimeclang_enabled\": false,\n\t";
}
fout << "\t\"sublimeclang_options\":\n\t\t[\n\t\t";
std::set<std::string>::const_iterator stringSetIter = includeDirs.begin();
while (stringSetIter != includeDirs.end())