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

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

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

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

Это возможно?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
10
0
3 860
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Мне пришлось поддерживать отдельные 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 на командную строку. Это будет происходить автоматически каждый раз, когда вы будете строить.

Другие вопросы по теме