Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top