Есть ли способ использовать компилятор GCC, все еще имея возможность разрабатывать через Visual Studio IDE?
Наш проект кроссплатформенный, и у меня довольно часто возникают проблемы из-за моего коллега, потому что я проверяю код, который не соответствует стандартам (это можно отнести к компилятору VS!).
Я все еще хотел бы иметь возможность компилировать с использованием компилятора MS, чтобы я мог продолжить отладку и т.д., однако я хотел бы иметь возможность выключатель для компиляции с использованием GCC, просто чтобы я мог быть уверен, что я не нарушаю сборка на других платформах.
Это возможно?





Мне пришлось поддерживать отдельные make-файлы для компиляции с помощью gcc. Изучение make требует дополнительных затрат, но вы извлечете выгоду из глубокого знания своего кода и различий между VS C++ и gcc. Когда я это делал, я использовал VC 6, так что теперь, возможно, есть лучший способ с VS 2005.
Попробуйте Cygwin, если вы правильно настроили все свои Make-файлы, вы всегда можете попытаться скомпилировать как на VS, так и на GCC
Я не думаю, что есть простой переключатель, потому что параметры командной строки gcc сильно отличаются от VS. В любом случае, просто запустить компилятор будет нетривиально, поскольку ваша система сборки, вероятно, устанавливает набор определений препроцессора и переменных сборки, которые необходимо установить для успешной компиляции.
Если ваш коллега работает над Unix, у него, вероятно, есть система сборки на основе make, scons или cmake. Вы можете использовать Cygwin для установки стандартной цепочки инструментов Unix в Windows, включая gcc, make, flex, bison и все другие полезности Unix. Существуют собственные версии scons и cmake, но они будут пытаться использовать VS, так что это вам не поможет. Я не пробовал устанавливать их через Cygwin, чтобы увидеть, заставляет ли это их использовать gcc, но это может не иметь отношения к вам.
Создание make-системы, использующей компилятор VS, возможно, но болезненно (было там, сделал это). И другой вопрос. ;)
Затем вы можете использовать специальный шаг сборки для запуска компиляции gcc из VS. Было бы лучше иметь отдельную цель сборки (например, отладку и выпуск), и вы можете создавать их в файлах проекта (это просто файлы ASCII, проверьте их), но я не достаточно человек VS, чтобы знаю, как легко это было бы сделать. Поддерживать его в актуальном состоянии будет немного сложно, вы можете написать сценарий для его автоматического создания.
это зависит от того, насколько сложны ваши файлы проекта:
вам определенно нужна среда gcc, такая как cygwin.
для небольших проектов или компиляции одного файла вы можете использовать собственный инструмент сборки (файл правил)
для больших проектов / решений я автоматически создаю файл config / makefile autotools из vcproj / sln-файла и компилирую его внутри IDE. исходные файлы / строки предупреждений и ошибок gcc переводятся в их IDE-эквивалент (кликабельно в окне вывода).
Определенно есть способы сделать это - так мы разрабатываем для PS3 с помощью набора инструментов sony (который основан на gcc). Я не знаю точно, как это работает, но он довольно легко интегрируется в VS.
Я думаю, что вам нужно либо настроить его для сборки с помощью make-файла (вероятно, самый простой), либо написать программу-оболочку, которая преобразует аргументы VC в аргументы gcc. Кроме того, если вам нужен вывод ошибок / предупреждений в формате VS (чтобы вы могли щелкнуть его и получить этот файл / строку в редакторе), вам нужно что-то для преобразования вывода.
Этот материал может помочь вам в связанное обсуждение об использовании VS с версией WRS / VxWorks инструментов gcc:
Особенно обратите внимание на программа связана там, который преобразует вывод ошибки.
Предположительно, вы уже используете make-файл для сборки своего проекта, поскольку он кроссплатформенный. Просто сделайте свой VS-проект проектом make-файла с различными конфигурациями проекта, которые запускают make-файл с использованием разных параметров, чтобы указать, предназначена ли сборка для MSVC или GCC.
Если ваша сборка make-файла MSVC способна создавать файлы отладки (PDB) - а это должно быть возможно, то VS Debugger также будет работать без проблем.
Затем создание с использованием GCC внутри Visual Studio так же просто, как выбор раскрывающегося списка конфигурации «GCC» на панели инструментов.
То, что я собираюсь предложить, по-прежнему требует make-файла, поэтому я частично повторяю совет из более раннего ответа. Или, как уже упоминалось ранее, возможно, у вас уже есть make-файл, и в этом случае у вас будет еще меньше шагов для выполнения того, что я собираюсь описать.
Как только вы знаете свою конкретную команду командной строки Windows для вызова make или g ++ в вашем коде, вы создаете «Pre-Build Event» в своем проекте Visual Studio. («Свойства проекта >> Свойства конфигурации >> События сборки >> Событие перед сборкой»).
Событие предварительной сборки может вызвать сценарий файла bat или любой другой сценарий на вашем компьютере, и этот сценарий сможет вернуть код ошибки. По сути, «сценарий ОК» или «сценарий ОТКАЗАН» - это степень взаимодействия вашего сценария ОБРАТНО с Visual Studio.
Сценарий не видит автоматически все переменные среды Visual Studio (такие как $ (InputDir), $ (ProjectDir), $ (SolutionName) и т. д.), Однако вы можете использовать эти переменные, когда указываете, как вызывать скрипт. Другими словами, вы можете передать эти значения сценарию в качестве аргументов.
Настройте это так, чтобы каждый раз при сборке в Visual Studio событие предварительной сборки СНАЧАЛА пыталось запустить make / g ++ в вашем коде. Если ваш сценарий (тот, который вызывает make / g ++) обнаруживает какие-либо проблемы, он возвращает ошибку, и сборку можно ОСТАНОВИТЬ прямо сейчас. Сценарий может печатать на стандартный вывод или стандартный поток вывода, и этот вывод должен быть виден вам в окне вывода Visual Studio Build (окно, которое обычно показывает такие вещи, как «========== Сборка: 3 выполнено успешно, 0 не выполнено») ).
Вы можете распечатать сценарий:
"BUILD FAILED, обнаружен непереносимый код, make / g ++ вернула следующее: ........."
Таким образом, вам не нужно периодически переключаться с Visual Studio на командную строку. Это будет происходить автоматически каждый раз, когда вы будете строить.