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

Есть ли способ использовать компилятор GCC, хотя он все еще может развиваться через среду разработки Visual Studio?

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

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

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

Ответ 1

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

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

Событие предварительной сборки может вызывать файл bat (w370) или любой другой script на вашем компьютере и что script сможет вернуть код ошибки. По существу, "script OK" или "script FAILED" - это объем объема связи, который ваш script может иметь BACK для визуальной студии.

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

Установите это так, чтобы каждый раз, когда вы строите в Visual Studio, событие pre-build будет FIRST пытаться запустить make/g++ в вашем коде. Если ваш script (тот, который вызывает make/g++) обнаруживает какие-либо проблемы, то script возвращает ошибку, и сборка может быть STOPPED прямо там и там. script может печатать на stdout или stderr, и этот вывод должен быть виден вам в окне вывода Visual Studio Build (окно, которое обычно показывает такие вещи, как "========== Build: 3 удалось, 0 не удалось" ).

Вы можете напечатать script:

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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

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

Ответ 7

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

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

Затем построение с использованием GCC внутри Visual Studio так же просто, как выбор раскрывающегося списка конфигурации GCC на панели инструментов.