Подтвердить что ты не робот

Импортировать существующий исходный код на С++ в Visual Studio

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

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

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

4b9b3361

Ответ 1

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

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

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

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


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

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

Кроме того, этот script также содержит зависимости, которые подают фактическую сборку script.

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


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

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

Плюсы:

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

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

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

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

Ответ 2

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

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

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

Переключение кнопки "Показать все файлы" показывает полную иерархию со всеми каталогами и файлами внутри.

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

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

Ответ 3

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

Например,

File > New > Project... Visual С++ > Win32 > Консольное приложение Win32 Настройки приложения > - Снимите флажок "Предварительно скомпилированный заголовок" - Проверьте "Пустой проект"

Затем создается проект. Чтобы добавить существующий код:

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

Перекомпилировать, сделать!

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

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

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

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

Ответ 7

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