https://blogs.msdn.microsoft.com/vcblog/2017/08/14/cmake-support-in-visual-studio-customizing-your-environment/

l Studio 2017 предоставляет встроенную поддержку для обработки проектов CMake.Документация в основном охватывает сценарии, основанные на уже существующих проектах cmake. Но есть ли поддержка для создания проекта cmake без необходимости возиться с файлом CMakeLists.txt?

 Florian14 окт. 2017 г., 10:30
Можете ли вы объяснить более подробно, что вы ищете, например? по сравнению с«Как настроить параметры компилятора с помощью CMake в Visual Studio 2017»? Потому что, с моей точки зрения, все наоборот. Функция «Открыть папку» в проектах с поддержкой CMake удалила файлы решения / проекта VS. Таким образом, вам все еще нужно будет где-то определить, что и как вы хотите создать.
 user193421214 окт. 2017 г., 10:58
Я ожидаю что-то вроде «Создать проект Cmake», который откроет мастер для определения определения сборки. Очень похоже на мастер для создания проекта Cpp VS2017. Результатом должен быть сгенерированный файл CMakeList.txt, содержащий основные настройки.

Ответы на вопрос(2)

Решение Вопроса
РЕДАКТИРОВАТЬ: VS2017 15.6 добавлен официальный новый проект CMake Wizard

версия 15.6 появилась функция «Создание проектов CMake из диалога добавления нового проекта».

Это создает простойниндзя основанный на C ++ проект Hello CMake.

Пользовательский Мастер CMake

Ваш вопрос и отсутствие существующего мастера вдохновили меня на его написание. Это очень простая установка, и она определенно выиграет, если люди с большим опытом написания расширений для Visual Studio внесут свой вклад, но вот оно:

https://github.com/FloriansGit/VSCMakeWizards

редактировать: Последний установщик VSIX теперь также доступен бесплатно на VS Marketplace

https://marketplace.visualstudio.com/items?itemName=oOFlorianOo.CMakeProjectWizards

Новый «Исполняемый шаблон CMake» появится после перезапуска Visual Studio 2017 в разделе «Файл / Новый / Проект / Visual C ++»:

Он генерирует следующие файлы в данной папке и затем использует «Открыть папку»:

CMakeLists.txt
CMakeSettings.json
MyProject1.cpp 
Следующие шаги

Возможные следующие шаги:

Добавьте интерактивный диалог мастера для некоторых основных настроек проекта / компилятораДобавьте также Мастер элементов, чтобы иметь возможность добавлять исходные файлы вCMakeLists.txt

Я с нетерпением жду отзывов об основной идее. Пожалуйста, добавляйте любые запросы непосредственно к:

https://github.com/FloriansGit/VSCMakeWizards/issues

Код

И вот основной / начальный код Wizards в качестве ссылки:

WizardImplementationClass.cs

// Based on https://docs.microsoft.com/en-us/visualstudio/extensibility/how-to-use-wizards-with-project-templates
//      and https://stackoverflow.com/questions/3882764/issue-with-visual-studio-template-directory-creation

using System;
using System.IO;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using EnvDTE;
using Microsoft.VisualStudio.TemplateWizard;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using EnvDTE80;

namespace VSCMakeWizards
{
    public class WizardImplementation : IWizard
    {
        public void RunStarted(object automationObject,
            Dictionary<string, string> replacementsDictionary,
            WizardRunKind runKind, object[] customParams)
        {
            var destinationDir = replacementsDictionary["$destinationdirectory$"];
            var desiredNamespace = replacementsDictionary["$safeprojectname$"];
            var templatePath = Path.GetDirectoryName((string)customParams[0]);

            var dte = automationObject as DTE2;
            var solution = dte.Solution as EnvDTE100.Solution4;

            if (solution.IsOpen)
            {
                solution.Close();
            }

            File.Copy(Path.Combine(templatePath, "CMakeSettings.json"), Path.Combine(destinationDir, "CMakeSettings.json"));
            File.Copy(Path.Combine(templatePath, "main.cpp"), Path.Combine(destinationDir, desiredNamespace + ".cpp"));

            // see https://stackoverflow.com/questions/1231768/c-sharp-string-replace-with-dictionary
            Regex re = new Regex(@"(\$\w+\$)", RegexOptions.Compiled);
            string input = File.ReadAllText(Path.Combine(templatePath, "CMakeLists.txt"));
            string output = re.Replace(input, match => replacementsDictionary[match.Groups[1].Value]);

            File.WriteAllText(Path.Combine(destinationDir, "CMakeLists.txt"), output);

            var vsSolution = Package.GetGlobalService(typeof(SVsSolution)) as IVsSolution7;

            if (vsSolution != null)
            {
                vsSolution.OpenFolder(destinationDir);
            }

            throw new WizardCancelledException();
        }

        // This method is called before opening any item that   
        // has the OpenInEditor attribute.  
        public void BeforeOpeningFile(ProjectItem projectItem)
        {
        }

        public void ProjectFinishedGenerating(Project project)
        {
        }

        // This method is only called for item templates,  
        // not for project templates.  
        public void ProjectItemFinishedGenerating(ProjectItem
            projectItem)
        {
        }

        // This method is called after the project is created.  
        public void RunFinished()
        {
        }

        // This method is only called for item templates,  
        // not for project templates.  
        public bool ShouldAddProjectItem(string filePath)
        {
            return false;
        }
    }
}

Запись:WizardCancelledException необходимо, потому что Visual Studio иначе попытается сгенерировать / открыть реальное решение. Мастер проектов типа «Открыть папку» пока не поддерживается (для этого нет SDK API).

РекомендацииПроблема с созданием шаблона и каталога Visual StudioC # String заменить на словарь

нет мастера создания нового проекта CMake, но это можно сделать, настроивCMakeSettings.json файл.https://blogs.msdn.microsoft.com/vcblog/2017/08/14/cmake-support-in-visual-studio-customizing-your-environment/

Ваш ответ на вопрос