2011-01-31 5 views
16

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

Импортная емкость, которую я нашел, скрывает каталоги и помещает их всех в один проект. Я что-то упускаю?

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

ответ

6

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

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

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

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


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

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

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

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


@Michael Burr «Насколько сложные является питон сценарии и любой поддерживающей„шаблоны“, которые могут понадобиться?»

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

Плюсы:

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

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

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

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

+0

Это звучит довольно интересно для меня. Насколько сложны скрипты python и любые поддерживающие «шаблоны», которые могут вам понадобиться? –

2

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

Например,

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

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

Project> Add Existing Item ...> - Выберите файл (ы), чтобы добавить

Recompile, сделано!

+0

John: Есть сотни существующих файлов cpp - вот такой подход, который я уже пробовал. Каждая папка должна рассматриваться как отдельная библиотека lib/dll (а также 30+ папок). – pinvoke

+1

@pinvoke: перефразируя группу sucky 80, «портирование трудно сделать». –

1

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

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

1

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

+1

«Структура каталогов моего кода сохранена». Я попробовал, все мои файлы были «плоскими», перечисленные в разделе «Исходные файлы». – wil

+1

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

12

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

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

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

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

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

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

+0

Это не работает. Visual Studio просто сбрасывает все файлы .h в папку «Заголовочные файлы» и все .cpp-файлы в папку «Исходные файлы». Он не сохраняет иерархию папок вообще. – android927

1

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

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

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

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

0

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

Смежные вопросы