Импортировать существующий исходный код C ++ в Visual Studio - PullRequest
19 голосов
/ 31 января 2011

Я пытаюсь импортировать исходный код существующего приложения на С ++ в Visual Studio, чтобы воспользоваться некоторыми специфическими инструментами MS. Однако после поиска в Интернете и игры с Visual Studio я не могу найти простой способ импортировать существующий исходный код c ++ в Visual Studio и сохранить его структурно нетронутым.

Потенциал импорта, который я нашел, сглаживает каталоги и объединяет их в один проект. Я что-то упустил?

(Это все неуправляемый C ++ и содержит специальные сборки для win / unix)

Ответы [ 7 ]

13 голосов
/ 29 сентября 2011

Без проекта / решения загружено, в Visual Studio 2005 я вижу этот пункт меню:

Файл> Новый проект из существующего кода ...

После выполнения мастера моя проблема решена!

При нажатии кнопки «Показать все файлы» отображается полная иерархия со всеми каталогами и файлами внутри.

Если опция «Новый проект из существующего кода ...» недоступна, вам необходимо добавить ее в «Инструменты»> «Настроить»

image Customize... Commands tab, File menu, Add Command button, File menu, New Project From Existing Code...">

9 голосов
/ 31 января 2011

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

Лучший вариант, который я вижу, на самом деле - создание файлов проекта по какому-либо сценарию.

  • Создание отдельного проекта вручную (создать пустой проект, затем добавить файлы),
  • Сконфигурируйте его настолько близко, насколько это возможно (например, с предварительно скомпилированными заголовками, конфигурациями сборки и т. Д.)
  • Используйте .vcproj, созданный в качестве каркаса для создаваемых файлов проекта

Очень простой метод - сгенерировать список, имя проекта и т. Д. Со "странными токенами" и заполнить их генератором. Если вы хотите быть хорошим парнем, вы, конечно, можете использовать некоторую библиотеку обработки XML.


Наш опыт: На самом деле мы больше не храним .vcproj и .sln в репозитории (git), но скрипт на python, который заново генерирует их из дерева исходных текстов, вместе с VS 2008 «шаблоны листа свойств» (или как они там называются). Это очень помогает сделать общие корректировки.

Сценарий генерации проекта содержит информацию обо всех специализациях проектов (например, используют ли они MFC / ATL, создаст ли он DLL или EXE, исключаемые файлы).

Кроме того, этот скрипт также содержит зависимости, которые подают реальный скрипт сборки.

Это работает довольно хорошо, проблемы незначительны: python требуется в системах сборки, не забывая перегенерировать файлы проекта, мне пришлось изучить некоторый python, чтобы внести коррективы в некоторые проекты.


@ Michael Burr «Насколько сложны скрипты на python и какие вспомогательные« шаблоны »вам могут понадобиться?»

Честно говоря, я не могу сказать, так как я дал задание другому разработчику (который выбрал python). Первоначальная задача заключалась в том, чтобы предоставить сценарий сборки, так как сборка решения VS2008 была недостаточно хороша для наших нужд, а старый пакетный файл не поддерживал распараллеливание. .vcproj поколение было добавлено позже. Насколько я понимаю, его скрипт генерирует файлы .vcproj и .sln с нуля, но извлекает все настройки из отдельных таблиц свойств.

Плюсы:

  • Добавление новых конфигураций на лету. Некоторые из проектов уже имели шесть конфигураций, и планирование поддержки юникода означало бы удвоение их на некоторое время. Некоторые неуклюжие инструменты все еще собираются как MBCS, поэтому у некоторых библиотек теперь есть 8 конфигов. Настроить это из рук - это боль, теперь это меня больше не беспокоит.

  • Глобальные изменения, например, перемещение по относительным путям проекта, папке для временных файлов и для окончательных двоичных файлов, пока мы не нашли решение, которое нас порадовало

  • Стабильность сборки. Слияние файлов проекта VC6 было заметным источником ошибок по разным причинам, и файлы проекта VC9 выглядели не лучше. Теперь все выглядит лучше: настройки компиляции / ссылки в листах свойств, обработка файлов в скрипте. Кроме того, сценарий в основном перечисляет вариаций от нашего значения по умолчанию , в результате чего его легче читать, чем файл проекта.

В целом: я не вижу большой пользы, когда ваши проекты уже настроены, они довольно стабильны, и у вас нет реальных проблем. Однако при переходе к unknown (для нас: в основном VC6 -> VC9 и сборки Unicode) гибкость значительно снижает риск экспериментов.

2 голосов
/ 31 января 2011

Создайте новое пустое решение и добавьте в него свой исходный код.

Например,

Файл> Создать> Проект ... Visual C ++> Win32> Настройки приложения консоли Win32>- Снимите флажок «Предварительно скомпилированный заголовок» - Установите флажок «Пустой проект»

. После этого проект будет создан.Чтобы добавить существующий код:

Проект> Добавить существующий элемент ...> - Выберите файлы для добавления

Перекомпилируйте, готово!

1 голос
/ 02 февраля 2012

Вы всегда можете переключить вид из меню проекта

Например.Проект-> Показать все файлы

Выше будут отображаться файлы в неформатированном формате необработанной файловой системы

Не уверен в старых версиях, но он работает на VS 2010

1 голос
/ 14 июня 2011

Я знаю, что этот вопрос уже помечен как правильный, но мне удалось импортировать существующий код в проект с помощью Visual Studio 2008, выполнив команду «Файл» -> «Новый проект из существующего кода». Структура каталогов моего кода была сохранена.

1 голос
/ 31 января 2011

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

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

0 голосов
/ 04 июля 2012

Я понимаю, у меня та же проблема: многие файлы .cpp и .h организованы во многие папки и подпапки с путями включения, написанными для этой структуры папок.Единственный способ импортировать эту структуру папок вместе с исходными файлами - это использовать «Показать все файлы», а затем щелкнуть правой кнопкой мыши по папкам и выбрать «Импорт в проект».Это работает для меня, когда я использую проекты C-Sharp.Но это не работает для моих проектов C ++.Я все еще ищу решение ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...