Подтвердить что ты не робот

Как использовать GCC с Microsoft Visual Studio?

Я создаю очень большой проект (несколько тысяч строк), поэтому лучше не использовать Notepad ++. IDE сделает его намного проще. У меня есть опыт работы с Microsoft Visual Studio и люблю его. Есть ли простой способ использовать Cygwin GCC из Microsoft Visual Studio?

В качестве альтернативы, существуют ли какие-либо другие хорошие IDE для Windows для GCC, помимо NetBeans и Eclipse? (Я ненавижу их обоих со страстью.)

4b9b3361

Ответ 1

Здесь есть несколько способов:

Вариант 1. Создание пользовательского инструмента сборки

Visual Studio 2005 и новее позволит вам зарегистрировать пользовательские инструменты сборки. Они сообщают IDE, как преобразовать файлы одной формы (например, файл .cpp) в другую форму (например, файл .obj).

Насколько я знаю, никто еще не сделал этого для GCC. А для того, чтобы сделать это самостоятельно, нужно написать код COM, который, вероятно, слишком сложен, чтобы в него можно было погрузиться только для одного проекта. У вас должна быть веская причина, чтобы начать этот проект.

Затем вам нужно вручную настроить каждый проект, чтобы он использовал собственный инструмент сборки вместо стандартного, так как вы используете расширение имени файла (.cpp, вероятно), о котором Visual C++ уже знает. Вы столкнетесь с проблемами, если попытаетесь смешать компиляторы V C++ и g++ для одного исполняемого файла, созданного из нескольких модулей.

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

Вариант 2: Makefile Project

  1. Запустите Visual Studio и скажите "Файл"> "Новый проект".

  2. В разделе Visual C++ выберите Makefile Project

  3. Заполните мастер проекта Makefile:

    • Сборка командной строки: make
    • Чистые команды: сделать чистыми
    • Перестройте командную строку: очистить все

Вы можете оставить поле Output (для отладки) в одиночку, если вы назвали свой исполняемый файл после имени проекта, и он приземлился там, где Visual Studio ожидает его найти.

Оставьте остальные поля в покое, если вы не знаете, что это такое и почему вы хотите их изменить. Например, вы можете передать флаг -D в строке определения препроцессора, чтобы получить отдельные выходные данные отладки и выпуска. Если вы знаете, что хотите этого, вы знаете, как его настроить, поэтому я не собираюсь делать этот длинный ответ еще длиннее, чтобы объяснить это.

Вам будет задан тот же набор вопросов для сборки выпуска. Если вы хотите работать с отдельными сборками отладки и выпуска, внесите здесь какие-либо изменения.

Сделав все это, вы все равно должны создать Makefile и добавить make.exe к вашему PATH. Как и в случае с вопросом "Отладка против выпуска", переход на этот уровень детализации оттолкнет этот ответ от темы.

Каким бы уродливым это ни выглядело, это все же проще, чем создавать собственные инструменты для сборки. Кроме того, вы говорите, что в конце концов вам нужно портировать на Unix, так что вам все равно понадобится Makefile.

Вариант 3: кроссплатформенная разработка

Вы говорите, что хотите портировать эту программу на Unix в какой-то момент, но это не значит, что вы должны сейчас использовать GCC в Windows. Вполне возможно написать вашу программу так, чтобы она собиралась под Visual C++ в Windows и GCC/Makefiles в * ix системах.

Есть несколько инструментов, которые делают это проще. Одним из самых популярных вариантов является CMake, который доступен в качестве опции времени установки в новых версиях Visual Studio. Есть много альтернатив, таких как SCons и Bakefile.

Ответ 2

Я из будущего.

Я держу (трясуя) инструментальную цепочку C/С++, используя Visual Code в Win/Lin/Mac и MinGW, установленном с Choclatey. (Это было сделано для моего здравомыслия - установите GDB и GCC, как вы хотите)

Я запустил его с GCC и GDB с IntelliSense, используя MS собственные странные JSON make файлы. Когда-нибудь кто-то (вы?) Напишет Gradle или Python script, чтобы сгенерировать их; пока примеры онлайн в документах, похоже, работают.

Кажется, требуется три типа JSON:

  • одиночная IntelliSense конфигурация для всего рабочего пространства
  • a Отладка Конфигурация для каждого двоичного файла, который вы хотите отлаживать
    • они могут вызывать задачи сборки
  • a Задача сборки для каждого артефакта
    • Я не думаю, что там "требуется" или "зависимость" thingie-mah-bob; извините