static public string GetActiveConfigurationName()
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            string solutionPath = EditorUtils.GetSolutionPath();

            if (solutionPath == null || solutionPath.Length == 0)
            {
                return(null);
            }

            string activeConfigFilename = solutionPath + @".vs\ProjectSettings.json";

            if (File.Exists(activeConfigFilename))
            {
                var activeConfig = new CMakeActiveConfiguration();

                try
                {
                    string jsonString = File.ReadAllText(activeConfigFilename);
                    activeConfig = JsonConvert.DeserializeObject <CMakeActiveConfiguration>(jsonString);
                }
                catch (Exception e)
                {
                    OutputLog.Error(e.Message);
                }

                if (activeConfig != null)
                {
                    return(activeConfig.CurrentProjectSetting);
                }
            }

            return(null);
        }
        public override string ComputeMacro(string macroStr)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            if (macroStr == @"${projectDir}")
            {
                return(EditorUtils.GetSolutionPath());
            }
            else if (macroStr == @"${name}")
            {
                return(ExtractorCMake.GetActiveConfigurationName());
            }

            return(null);
        }
        private CMakeConfiguration GetActiveConfiguration()
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            string solutionPath = EditorUtils.GetSolutionPath();

            if (solutionPath == null || solutionPath.Length == 0)
            {
                return(null);
            }

            string settingsFilename = solutionPath + "CMakeSettings.json";

            if (File.Exists(settingsFilename))
            {
                CMakeSettings settings = null;

                try
                {
                    string jsonString = File.ReadAllText(settingsFilename);
                    settings = JsonConvert.DeserializeObject <CMakeSettings>(jsonString);
                }
                catch (Exception e)
                {
                    OutputLog.Error(e.Message);
                }

                string activeConfigName = GetActiveConfigurationName();
                if (activeConfigName != null && activeConfigName.Length > 0 && settings != null && settings.configurations != null)
                {
                    foreach (CMakeConfiguration config in settings.configurations)
                    {
                        if (config.name == activeConfigName)
                        {
                            return(config);
                        }
                    }
                }
            }

            return(null);
        }