Visual studio создать проект из существующего кода

Обновлено: 08.07.2024

В наше время open source проекты все популярнее. На площадках открытых проектов, например, на github можно найти множество полезных программ, но они не всегда имеют исполняемые файлы ("exe"), поэтому я постараюсь рассказать о том, как можно собрать самостоятельно C/C++ программу, из исходников, написанную на Microsoft Visual Studio.

Первым делом нам необходимо загрузить онлайн установщик Microsoft Visual Studio, с официального сайта. Для компиляции С/С++ проектов нет необходимости во всех пакетах и можно выбрать только те, которые нам необходимы.

Установщик загрузит необходимые пакеты из интернета и установит их.

После установки Visual Studio можно убедиться, что всё работает создав тестовый проект и скомпилировав его. Для этого нажмите в меню "Файл" → "Создать" → "Проект. "

После чего появится диалог выбора типа проекта, где можно выбрать:

  • Консольное приложение;
  • Классическое приложение;
  • Библиотеку динамической компоновки (dll);
  • Статическую библиотеку;

В нашем случае для быстрой проверки подойдет консольное приложение, выбираем название и папку проекта , после чего жмём кнопку "ОК" и создается наша программа.

После этого остается остается лишь скомпилировать её, для этого нужно выбрать в меню "Сборка" и нажать на пункт "Собрать решение".

Далее наш проект скомпилируется и в папке проекта появится наш тестовый исполняемый файл ("exe").

Если всё работает как надо, то можно приступать к сборке какого-нибудь другого открытого проекта с github или другого хостинга проектов.

Первым делом нам нужно загрузить исходники проекта. На площадке github это делается довольно просто, жмем на кнопку "Code" и "Download ZIP". После чего нужно распаковать его и можно приступать к сборке.

Ищем файл с расширением "<название_проекта>.vcxproj" и запускаем его. Перед нами появится диалог в котором нам предложат обновить SDK проекта (набор библиотек для разработки, которые Microsoft периодически обновляет) и набор инструментов, жмём обновить.

Теперь наш проект можно собрать, но до сборки необходимо выбрать разрядность проекта (например, для 32 битной системы или 64 битной), а также тип сборки (отладочный режим - debug или release).

Выбираем 64 битную систему и тип сборки релиз, после чего компилируем проект. Как и ранее нужно выбрать в меню "Сборка" и нажать на пункт "Собрать решение".

Некоторые проектам требуется вручную изменить SDK и набор инструментов, на установленный у вас, для этого идём в свойства проекта, выбираем сверху типа сборки и разрядность системы и уже там изменяем SDK и набор инструментов. В выпадающем меню появляются установленные у нас версии, выбираем их и нажимаем "ОК". После чего наш проект скомпилируется.

Бывает, что проект использует сторонние библиотеки, для этого их нужно загрузить отдельно и положить в папку. Узнать путь или изменить его можно в свойстве проекта, в разделе "С/C++" → "Общие" → "Дополнительные каталоги включаемых файлов".

Бывает, что SDK или набор инструментов, в свойстве проекта не изменяется в диалоге, чтобы изменить их нужно записать номер SDK, закрыть Visual Studio и вручную, блокнотом изменить этот номер в файле проекта "<название_проекта>.vcxproj".

При возникновении других проблем можно попробовать их загуглить, возможно, что кто-то уже сталкивался с ними и решил их.

Из этой статьи вы узнаете, как создавать с нуля и использовать проекты Visual Studio для хранения артефактов, необходимых для создания приложений. Если вы не знакомы с проектами в Visual Studio, см. этот обзор проектов и решений. Сведения о том, как быстро создать проект на основе шаблона, см. в разделе Создание проекта на основе шаблона.

Проекты содержат объекты, необходимые для создания приложения в Visual Studio, например файлы исходного кода, растровые изображения, значки, а также ссылки на компоненты и службы. Когда вы создаете проект, Visual Studio создает решение, в котором будут содержаться проекты. После этого в решение при необходимости можно добавить другие новые или существующие проекты. Можно также создавать пустые решения. Решения также могут содержать файлы, не связанные с определенным проектом.

Схема, показывающая иерархию решения и проекта.

Этот раздел относится к Visual Studio в Windows. Информацию о Visual Studio для Mac см. в статье Создание проектов в Visual Studio для Mac.

Решения и проекты можно просматривать в окне инструментов, которое называется обозревателем решений. На приведенном ниже снимке экрана показан пример решения в обозревателе решений (BikeSharing.Xamarin-UWP), который содержит два проекта: BikeSharing.Clients.Core и BikeSharing.Clients.Windows. Каждый проект включает в себя несколько файлов, папок и ссылок. Полужирным шрифтом выделено имя запускаемого проекта. Этот проект выполняется при запуске приложения. Вы можете выбрать запускаемый проект.

Снимок экрана: Обозреватель решений с двумя проектами.

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

Имейте в виду, что для разработки приложений в Visual Studio необязательно использовать проекты и решения. Вы можете просто открыть код, клонированный из GIT или скачанный из другого места. Дополнительные сведения см. в статье Разработка кода в Visual Studio без использования проектов и решений.

Создание проекта из шаблона проекта

Сведения о том, как выбрать шаблон для создания нового проекта, см. в статье Создание проекта в Visual Studio. А пример проекта и решения, созданного с нуля, а также пошаговые инструкции и пример кода см. в статье Общие сведения о проектах и решениях.

Создание проекта из существующих файлов с текстом программ

Если у вас есть коллекция файлов исходного кода, вы можете легко добавить их в проект.

Последовательно выберите Файл > Создать > Project From Existing Code (Проект из существующего кода).

В мастере создания проекта по существующим файлам с кодом выберите в раскрывающемся списке Задать тип проекта нужный тип проекта, а затем нажмите Далее.

В мастере перейдите к месту хранения файлов и введите имя нового проекта в поле Имя. По завершении нажмите кнопку Готово.

Добавление файлов в решение

Если у вас есть файлы, которые относятся к нескольким проектам, например файл сведений для решения или иные файлы, которые относятся к уровню решения, а не отдельного проекта, их можно добавить в само решение. Чтобы добавить элемент в решение, щелкните правой кнопкой мыши узел решения в Обозревателе решений и выберите в контекстном меню пункты Добавить > Новый элемент или Добавить > Существующий элемент.

Файл решения представляет собой структуру для организации проектов в Visual Studio. Он содержит состояние этих сведений в двух файлах: SLN (текстовый файл, общий) и SUO (двоичный, скрытый, параметры решения для конкретного пользователя). Таким образом, решение — это не ресурс, который нужно копировать и переименовывать; вместо этого лучше создать новое решение, а затем добавить в него существующие элементы.

Снимок экрана: раскрывающийся список "Платформа" в диалоговом окне "Новый проект".

Снимок экрана: средство выбора платформы в диалоговом окне Configure new project (Настройка нового проекта).

Создание пустых решений

Вы также можете создавать пустые решения, не содержащие проектов. Это может быть предпочтительно, если вы хотите создать решение и проекты с нуля.

Создание пустого решения

В области слева (Шаблоны) щелкните в раскрывающемся списке Другие типы проектов > Решения Visual Studio.

В средней области выберите Пустое решение.

Введите значение Имя и Расположение для решения, а затем нажмите ОК.

В поле поиска на странице Создание проекта введите решение.

Выберите шаблон Пустое решение и нажмите кнопку Далее.

Введите значение Имя и Расположение для решения, а затем нажмите Создать.

После создания пустого решения к нему можно добавить новые или существующие проекты или элементы, выбрав пункт Добавить новый элемент или Добавить существующий элемент в меню Проект.

Как было сказано ранее, вы также можете открывать файлы кода без использования проекта или решения. Сведения о разработке кода таким образом см. в статье Разработка кода в Visual Studio без использования проектов и решений.

Создание временного проекта

Чтобы создать временный проект, сначала выберите Сервис > Параметры > Проекты и решения > Общие, а затем снимите флажок Сохранять новые проекты в момент создания. После этого откройте диалоговое окно Новый проект, как обычно.

Удаление решения, проекта или элемента

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

Чтобы полностью удалить решение или другой компонент из системы, удалите папку, содержащую файлы SLN и SUO решения, используя проводник Windows. (Перед удалением решения вы, возможно, захотите выполнить резервное копирование проектов и файлов на случай, если они вам понадобятся позже).

SUO-файл является скрытым и не отображается, если проводник имеет параметры по умолчанию. Для отображения скрытых файлов в меню Вид проводника установите флажок Скрытые элементы.

Окончательное удаление решения

Вы можете перейти к проводнику в Windows, используя Обозреватель решений в Visual Studio. Ниже описывается порядок действий.

В Обозревателе решений щелкните правой кнопкой мыши меню (контекстное меню) решение, которое вы хотите удалить, и выберите Открыть папку в проводнике.

В проводнике перейдите на один уровень вверх.

Выберите папку, содержащую решение, и нажмите клавишу DELETE.

В Visual Studio существующие файлы кода можно перенести в проект C++ с помощью мастера создания проектов из существующих файлов кода. Этот мастер создает проект, использующий систему MSBuild для управления исходными файлами и конфигурацией сборки. Лучше всего она работает с относительно простыми проектами, в которых нет сложных иерархий папок. Мастер недоступен в более старых выпусках Visual Studio Express.

Перенос существующих файлов кода в проект C++ позволяет использовать собственные функции управления проектами MSBuild, встроенные в интегрированную среду разработки. Если вы предпочитаете использовать существующую систему сборки, например файлы makefile NMake, CMake или альтернативные варианты, вместо этого можно использовать функцию "Открыть папку" или средство CMake. Дополнительные сведения см. в статьях Проекты "Открыть папку" в C++ или Проекты CMake в Visual Studio. Оба варианта позволяют использовать возможности интегрированной среды разработки, такие как IntelliSense и Свойства проекта.

Создание проекта C++ из существующего кода

В меню Файл выберите пункт Создать > Проект из существующего кода.

Укажите расположение проекта, каталог исходных файлов и типы файлов, которые мастер импортирует в новый проект. Чтобы продолжить, нажмите кнопку Далее .

Установите флажок Добавить вложенные папки, чтобы файлы кода копировались в проект из всех подкаталогов. Каталоги перечислены в столбце Папка.
— Выберите Добавить, чтобы отобразилось диалоговое окно Добавление файлов в проект из этой папки, чтобы указать каталоги в которых мастер будет искать существующие файлы кода.
— Выберите Удалить, чтобы удалить путь к каталогу, выбранный в списке.

Создание нового проекта в диалоговом окне "Существующий код", где показаны параметры расположения проекта.

Укажите настройки проекта, например, среду сборки и ее параметры, соответствующие конкретному типу нового проекта. Чтобы продолжить, нажмите кнопку Далее .

Выберите Тип проекта, чтобы указать тип проекта, создаваемого мастером. Выберите Проект приложения Windows, Проект консольного приложения, Проект библиотеки DLL или Проект статической библиотеки (LIB) .

Установите флажок Добавить поддержку для ATL, чтобы добавить ее в новый проект.

Установите флажок Добавить поддержку для MFC, чтобы добавить ее в новый проект.

Создание нового проекта в диалоговом окне "Существующий код", где показаны параметры сборки проекта.

Если установлен флажок Использовать внешнюю систему сборки, интегрированная среда разработки не создает проект, поэтому параметры /D, /I, /FI, /AI и /FU для компиляции не требуются. Однако эти параметры должны быть заданы правильно для надлежащей работы IntelliSense.

Задайте нужные параметры отладочной конфигурации. Чтобы продолжить, нажмите кнопку Далее .

Создание нового проекта в диалоговом окне "Существующий код", где показаны параметры конфигурации "Отладка" и "Выпуск".

Команды Создать, Перестроить, Очистить и параметры Выходные данные (для отладки) включены, только если на странице Указание параметров проекта задан параметр Использовать внешнюю систему сборки.

Здесь вы можете установить флажок Совпадает с конфигурацией отладки: он укажет, что мастер будет создавать параметры для конфигурации выпуска, аналогичные параметрам проекта для конфигурации отладки. Этот параметр выбран по умолчанию. Пока этот флажок установлен, все остальные параметры на этой странице неактивны.

Я хочу сделать копию своего проекта. Я бы предпочел не начинать делать это с нуля, добавляя файлы, ссылки и т. Д. Обратите внимание, что я не имею в виду копирование для развертывания. Просто копия.

Есть ли в VS инструмент для этого? Я использую VS 2008

Если вам нужна копия, самый быстрый способ сделать это - сохранить проект. Затем сделайте копию всего этого в файловой системе. Вернитесь в Visual Studio и откройте копию. Оттуда я, скорее всего, порекомендую переименовать проект / решение, чтобы у вас не было двух с одинаковыми именами, но это самый быстрый способ сделать копию.

GUID проекта обновляется VS автоматически, если в том же решении существует другой проект с таким же GUID. Я пытаюсь это сделать, но он не переименовывает пространства имен приложений. Не то, что я искал. GUID проекта НЕ ОБНОВЛЯЕТСЯ АВТОМАТИЧЕСКИ VS in Community 2017 Версия 15.8.4. На самом деле, как это могло быть, если ваш AssemblyInfo.cs находится в управлении исходным кодом?

В вашем проекте выберите: Project - Export Template

Мастер позволит вам определить

  • Имя Шаблона
  • Описание шаблона
  • Икона
  • Предварительный просмотр изображения

Затем он архивирует ваш проект в каталог «Мои экспортированные шаблоны». У вас также есть возможность сделать ваш шаблон доступным при создании нового проекта.

Когда вы используете свой шаблон для создания нового проекта, пространство имен будет правильным для 'your_new_project_name' во всех файлах, все ссылки правильные, все идеально :)

ПРИМЕЧАНИЕ.
Если в вашем проекте есть пустая папка, она НЕ будет добавлена ​​в шаблон, поэтому я просто добавил пустой класс, соответствующий каждой папке, и образец изображения для папки изображений.

В VS2017 шаблон экспорта находился в пункте меню верхнего уровня Project. Это невероятно полезно, как я не знал об этом раньше? Благодарность! Это должен быть выбранный ответ. Очень просто! Этот процесс также должен был скопировать его в вашу папку Templates \ ProjectTemplates, просто убедитесь. Мне пришлось перезапустить Visual Studio, чтобы увидеть это в диалоговом окне создания проекта. Когда пришло время импортировать шаблон для создания нового проекта, я не мог понять, как это сделать. Оказалось, что мне пришлось использовать панель поиска в диалоговом окне «Новый проект», чтобы найти шаблон.

Думаю, если это то, что вы делаете часто, есть небольшая (платная) утилита, которая обещает сделать это за вас: я не использовал ее, поэтому не уверен, насколько она хороша:

На CodePlex также есть этот проект:

Я, вероятно, попробую проект codeplex, и если он не сработает, я вручную все переименую и отредактирую файл sln.

Крайне НЕ РЕКОМЕНДУЕТСЯ копировать проекты вообще, потому что некоторые файлы конфигурации сформированы внутри, например .csproj, .vspscc и т. Д., Могут (и, скорее всего, будут) указывать на ссылки, которые относятся к местоположению предыдущих решений и другим путям / местоположениям в системе или TFS. Если вы не являетесь экспертом в чтении этих файлов и исправлении ссылок, не пытайтесь копировать проекты.

Вы можете создать скелетный проект того же типа, который собираетесь скопировать, при этом будут созданы правильные файлы .csproj, .vspscc . Теперь вы можете свободно копировать файлы классов, скрипты и другой контент из предыдущего проекта, поскольку они не повлияют. Это обеспечит плавную сборку и контроль версий (если вы захотите в этом заинтересоваться)

Сказав все это, позвольте мне дать вам метод пошагового копирования проекта:

  1. В обозревателе решений перейдите к проекту, который хотите скопировать, и щелкните правой кнопкой мыши .
  2. Теперь выберите « Открыть папку в проводнике » (если у вас есть решение, сопоставленное с локальным путем на вашем диске).
  3. Выберите проекты, которые вы хотите реплицировать как целые папки (вместе со всеми зависимостями, файл bin .vspscc, файл .csproj)
  4. Вставьте их в желаемое место (это может быть та же папка решения или даже другая папка решения. Если она находится в той же папке решения, вам потребуется переименовать ее, а также .csproj и другие внутренние файлы на новое имя. ).
  5. Не возвращайтесь в Visual Studio, щелкните правой кнопкой мыши «Решение»> «Добавить»> «Существующий проект» .
  6. Найдите и выберите файл проекта (файл .csproj) в том месте, где вы его разместили, и выберите « открыть ».
  7. Теперь этот файл появится в обозревателе решений, чтобы вы могли работать.
Обновление: лучший ответ по состоянию на 2019 год - это тот, который ниже @Shane. Создание шаблонов VS - идеальный способ клонировать проекты без проблем со ссылками.

Я следую этим шагам и использую инструмент разработки под названием Resharper , который, кстати , потрясающий:

БлогNot. Как собрать проект C++ с github из исходников и подключить его к Visual Studio

Как собрать проект C++ с github из исходников и подключить его к Visual Studio

Благодаря менеджеру пакетов winget, уже входящему в актуальные сборки масдайки, теперь в Windows 10 можно инсталлировать приложения одной простой консольной командой (см. также доку от Микрософта).

Но мы рассмотрим сейчас ситуацию, когда у нас есть только ссылка на исходники проекта, скажем, на Гитхабе (возьмём для примера библиотеку для простых чисел primesieve) и нужно каким-то образом скомпилировать внешний проект в своей Studio, чтобы воспользоваться его возможностями в своём приложении.

В противном случае, конечно же, нестандартный include вроде этого, который вы нашли в коде-образце

работать не будет ни за что.

Первым делом скачаем все исходники внешнего проекта "как есть" в архиве .zip, для этого у нас на гитхабе есть кнопка "Download ZIP":

Как загрузить проект с github в архиве .zip


Как загрузить проект с github в архиве .zip

Развернём проект, не создавая новой папки, если у вашего архиватора нет такого же пункта меню, просто сотрите предлагаемое архиватором имя новой папки, потому что папка уже есть в архиве:

Извлечь внешний проект из архива, не создавая новой папки


Извлечь внешний проект из архива, не создавая новой папки

Если покопаться в файле readme.md проекта, как правило, можно найти инструкцию по установке (Build instructions) и даже "Detailed build instructions", где говорится, в числе прочего, и о компиляции проекта под Microsoft Visual C++:

Команды cmake для компиляции проекта со страницы документации


Команды cmake для компиляции проекта со страницы документации

Откроем свой "некомпилируемый" без нужной библиотеки проект в Studio (я использую актуальную сборку версии 2019) и обратимся к команде меню Вид - Терминал. Выберем инструмент "Командная строка разработчика" (по умолчанию в новых сборках теперь выбран PowerShell, впрочем, если в документации приведены команды PowerShell, то применяйте их).

У Микрософта инструмент описан вот здесь.

Командная строка разработчика в Studio


Командная строка разработчика в Studio

В командной строке пишем команды из документации, но сначала, конечно, нужно перейти в ту папку, где у вас развёрнут скачанный проект. Мне понадобилось ввести в консоли следующее, завершая каждую команду нажатием Enter:

- теперь я в нужной папке, так как развернул свой архив в папку d:\temp

Далее как написано:

Можно просто копировать команды со страницы документации, в окне консоли вверху есть стандартная кнопочка "Вставить". А вот точка в записи команд имеет значение, это ссылка на текущую папку!

Ну и, конечно, для другой версии Studio будет другое указание компилятора, узнать своё можно командой

Нужный генератор будет помечен в списке "звёздочкой".

Теперь проект можно открывать в Studio и работать с ним, все нужные файлы есть в папке d:\temp\primesieve-master

Но мы хотим подключить всё, что нужно, к своему имеющемуся проекту, а не пытаться модифицировать чужую библиотеку.

  • Меню Проект - Свойства, слева выбираем Свойства конфигурации, C/C++, Общие, раскрываем поле "Дополнительные каталоги включаемых файлов", говорим "Изменить" и показываем на папку D:\Temp\primesieve-master\include . В вашем проекте, как правило, тоже будет вложенная папка include .
  • В том же окне выбираем Компоновщик - Общие - Дополнительные каталоги библиотек, "Изменить" и добавляем путь D:\Temp\primesieve-master\Release . Этого может оказаться мало, у вашего проекта и внешнего должны быть выбраны одинаковые конфигурации решения. Так как я выбрал Release для внешнего проекта, то и в своём проекте в списке "Конфигурации решения" (на стандартной панели инструментов) указал Release и платформу x64. Можно было работать и с Debug, но тогда и внешний проект компилируем как Debug и потом выбираем путь D:\Temp\primesieve-master\Debug .
  • В списке C/C++ - Создание кода - Библиотека времени выполнения выбрал Многопоточный DLL (/MD), иначе будет "LNK2038: обнаружено несоответствие для 'RuntimeLibrary': значение 'MT_StaticRelease' не соответствует значению 'MD_DynamicRelease' в file.obj".
  • Сам файл библиотеки, как правило имеющий тип .lib , тоже нужно прописать. Всё в том же окне свойства проекта выбираем список Компоновщик - Ввод, раскрываем список "Дополнительные зависимости", жмём "Изменить" и указываем в поле ввода имя файла библиотеки primesieve.lib
  • На всякий случай, проверяем, что у нас в списке Компоновщик - Система - Подсистема, у меня там просто Консоль (/SUBSYSTEM:CONSOLE) , для других типов проектов может понадобиться изменение и этой настройки.

После этого у меня всё заработало.

Ну а конкретная задача, на которой я проверял библиотеку - печать самых длинных цепочек последовательных простых чисел, в которых разница между соседними значениями строго возрастает или строго убывает, предел счёта равен 1000000, вот сама программа:

Ответы вышли такие:

За счёт хорошо оптимизированного кода библиотеки считается всё мгновенно.

Читайте также: