Использование GCC из VS 2005 (8) IDE - PullRequest
       22

Использование GCC из VS 2005 (8) IDE

10 голосов
/ 15 сентября 2008

Есть ли способ использовать компилятор GCC, пока он еще может разрабатываться с помощью Visual Studio IDE?

Наш проект кроссплатформенный, и я довольно часто сталкиваюсь с проблемами от моего коллеги , потому что я проверяю код, который не соответствует стандартам (это можно отнести к компилятору VS!).

Я все еще хотел бы иметь возможность компилировать с использованием компилятора MS, чтобы я мог продолжить отладку и т. Д., Однако я хотел бы иметь возможность переключать для компиляции с использованием GCC, просто так, чтобы Я могу быть уверен, что не нарушу сборку на других платформах.

Возможно ли это?

Ответы [ 7 ]

5 голосов
/ 16 сентября 2008

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

Как только вы узнаете конкретную команду командной строки Windows для вызова make или g ++ в своем коде, вы создадите «Событие предварительной сборки» в проекте Visual Studio. («Свойства проекта >> Свойства конфигурации >> События сборки >> Событие предварительной сборки»).

Событие предварительной сборки может вызвать сценарий файла bat или любой другой сценарий на вашем компьютере, и этот сценарий сможет вернуть код ошибки. По сути, «сценарий в норме» или «сценарий не выполнен» - это степень связи, которую ваш сценарий может иметь НАЗАД в visual studio.

Скрипт не видит автоматически все переменные среды Visual Studio (такие как $ (InputDir), $ (ProjectDir), $ (SolutionName) и т. Д.), Однако вы можете использовать эти переменные, когда вы указываете, как вызывать скрипт. Другими словами, вы можете передать эти значения сценарию в качестве аргументов.

Настройте это так, чтобы каждый раз, когда вы собирали в Visual Studio, событие перед сборкой ПЕРВЫЙ пыталось запустить make / g ++ в вашем коде. Если ваш скрипт (тот, который вызывает make / g ++) обнаруживает какие-либо проблемы, тогда скрипт возвращает ошибку, и сборка может быть ОСТАНОВЛЕНА прямо здесь и сейчас. Сценарий может печатать в stdout или stderr, и этот вывод должен быть виден вам в окне вывода Visual Studio Build (в этом окне обычно отображаются такие вещи, как "========== Build: 3 успешно, 0 не удалось" ).

Вы можете распечатать скрипт:

"BUILD FAILED, обнаружен непереносимый код, make / g ++ вернул следующее: ........."

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

1 голос
/ 16 сентября 2008

Конечно, есть способы сделать это - так мы разрабатываем для PS3 с набором инструментов sony (который основан на gcc). Я не знаю точно, как это работает, но он довольно легко интегрируется в VS.

Я думаю, что вам нужно либо настроить его на сборку с помощью make-файла (возможно, самого простого), либо написать программу-обертку, которая преобразует аргументы VC в gcc. Кроме того, если вы хотите вывод ошибок / предупреждений в формате VS (чтобы вы могли щелкнуть по нему и получить этот файл / строку в редакторе), вам нужно что-то для преобразования вывода.

Этот материал может помочь вам в соответствующем обсуждении об использовании VS с версией WRS / VxWorks. инструментов gcc:

Особенно обратите внимание на связанную с ним программу , которая преобразует вывод ошибки.

1 голос
/ 15 сентября 2008

Я не думаю, что есть простой переключатель, потому что параметры командной строки gcc сильно отличаются от VS. В любом случае, просто запустить компилятор будет нетривиально, поскольку ваша система сборки, вероятно, устанавливает кучу определений препроцессора и переменных сборки, которые необходимо установить для успешной компиляции.

Если ваш коллега работает над Unix, он, вероятно, в любом случае имеет систему сборки make, scons или cmake. Вы можете использовать Cygwin для установки стандартного набора инструментов Unix для Windows, включая gcc, make, flex, bison и все другие вкусности Unix. Существуют нативные версии scons и cmake, но они попытаются использовать VS, так что это вам не поможет. Я не пробовал устанавливать их через Cygwin, чтобы проверить, не вынуждает ли это их gcc, но это может не относиться к вам.

Создание make-системы, использующей компилятор VS, возможно, но болезненно (это было сделано, это было сделано). И другой вопрос. ;)

Затем вы можете использовать специальный buildstep для запуска компиляции gcc из VS. Было бы лучше иметь отдельную цель сборки (например, Debug и Release), и вы можете создавать их в файлах проекта (это просто ASCII-файлы, посмотрите их), но я не достаточный человек для VS, чтобы знаю, как легко это было бы сделать. Поддерживать его в актуальном состоянии будет немного больно, вы можете написать скрипт для его автоматического создания.

0 голосов
/ 16 сентября 2008

Предположительно, вы уже используете makefile для сборки своего проекта, поскольку он кроссплатформенный. Просто сделайте ваш проект VS проектом make-файла с различными конфигурациями проекта, которые запускают файл сборки, используя разные параметры, чтобы указать, предназначена ли сборка для MSVC или GCC.

Если ваша сборка MSVC makefile способна создавать файлы отладки (PDB) - что она и должна делать, то VS Debugger также будет работать без проблем.

Тогда создание с использованием GCC внутри Visual Studio так же просто, как выбрать раскрывающийся список «GCC» на панели инструментов.

0 голосов
/ 15 сентября 2008

зависит от сложности файлов вашего проекта:

вам определенно нужна среда gcc, такая как cygwin.

  • для небольших проектов или компиляции одного файла вы можете использовать пользовательский инструмент сборки (файл правил)

  • для больших проектов / решений Я автоматически создаю файл конфигурации / сборки autotools из файла vcproj / sln-file и компилирую его в IDE. исходные файлы / строки предупреждений и ошибок gcc переводятся в их IDE-эквивалент (щелкаются в окне вывода).

0 голосов
/ 15 сентября 2008

Попробуйте Cygwin, если вы правильно настроили все свои Makefile, вы всегда можете попробовать скомпилировать как на VS, так и на GCC

0 голосов
/ 15 сентября 2008

Мне пришлось поддерживать отдельные make-файлы для компиляции с помощью gcc. С обучением делают начальные затраты, но вы извлечете выгоду из глубокого знания своего кода и различий между VS C ++ и gcc. Когда я делал это, я использовал VC 6, так что теперь может быть лучше с VS 2005.

...