Лучший способ настроить среду сборки Windows для C/C++

В основном я хочу скомпилировать C/C++ с помощью GCC в Windows. Две конкурирующие платформы, на мой взгляд, это MinGW и Cygwin. У каждого есть свои преимущества и ограничения. MinGW компилируется для Windows, тогда как Cygwin нужна cygwin .dll. Однако установка библиотек на MinGW сложна, тогда как на cygwin это проще, используя setup.exe в качестве «менеджера пакетов».

Мой вопрос в том, какой лучший способ компилировать в Windows. Не лучше ли использовать MinGW и бороться с библиотеками (в таком случае есть ли простой способ установки библиотек на MinGW). Или мне следует использовать Cygwin, если да, то как мне его скомпилировать, не нуждаясь в cygwin .dll, эффективно скомпилировать для обычной Windows.


person AndrewM    schedule 28.10.2009    source источник
comment
Субъективный вопрос. Я предпочитаю mingw, потому что вы не пишете код против уровня совместимости. Предполагая, что вам нужна бесплатная (как в пиве) среда, есть еще некоторые варианты, которые вы упускаете - Express-версии Visual Studio или версия VC++ только для командной строки.   -  person asveikau    schedule 28.10.2009
comment
Старый пост, но на случай, если люди наткнутся на него, я хочу дать ссылку на этот пост, рассказывающий о настройке среды C в Windows: thecodetailor.net/c-environment-on-windows. Поскольку в нем описывается его настройка через MSYS2, это упрощает управление пакетами/библиотеками.   -  person Salizer    schedule 18.03.2020


Ответы (9)


Самый простой и лучший способ компиляции в Windows — использовать visual studio expres. Это бесплатно. Хорошая причина для использования cygwin — кроссплатформенные сборки. Хорошей причиной для использования gcc является то, что он поддерживает некоторые компиляторы, которых нет у компилятора Microsoft.

Но в целом VC++ Express подходит только для разработки под Windows.

person Byron Whitlock    schedule 28.10.2009
comment
Если вы используете Visual Studio Express, вы не можете легально создавать коммерческие приложения без нарушения условий обслуживания. - person Andres; 28.10.2009
comment
@Andres: # Могу ли я использовать Express Editions в коммерческих целях? Да, лицензионных ограничений для приложений, созданных с помощью Visual Studio Express Editions, нет. - person ; 15.11.2009

Всегда есть возможность использовать -mno-cygwin с Cygwin для компиляции библиотек Windows, как это делает MinGW:

gcc -mno-cygwin file.c -o test

Это непростой выбор, и в основном он зависит от того, насколько вы будете полагаться на другие библиотеки. Cygwin действительно добавляет дополнительный слой, который тяжелее, но «эмулирует» среду Linux лучше, чем MinGW.

Редактировать:

Qt Creator позволяет компилировать с помощью MinGW в Windows (и gcc в Linux, ...), имеет IDE, которая делает отладку более удобной, чем gdb. Если вам нужны библиотеки, у вас все еще есть возможность использовать библиотеки Qt. Это было бы хорошей альтернативой Visual Studio, если вы действительно хотите придерживаться gcc для будущей переносимости.

person RedGlyph    schedule 28.10.2009
comment
Флаг -mno-cygwin не создает статический двоичный файл, он создает тот, который не связан с cygwin.dll — по сути, голая программа win32. На практике (по модулю, например, различная генерация кода из разных версий компилятора) это именно то, что вы получаете от компилятора mingw. - person Andy Ross; 28.10.2009
comment
Хорошо, спасибо, что указали на это, Энди, я отредактирую ответ. - person RedGlyph; 28.10.2009
comment
@Andy: Я действительно не знаю, но разве Cygwin libc (и, возможно, некоторые другие стандартные библиотеки) не зависят от cygwin.dll? т.е. если вы сделаете -mno-cygwin, не ограничитесь ли вы только Win32 API? - person Pavel Minaev; 28.10.2009
comment
@Pavel: Из FAQ по Cygwin (cygwin.com/faq.html), 6.10: The -mno-cygwin flag to gcc makes gcc link against standard Microsoft DLLs instead of Cygwin. This is desirable for native Windows programs that don't need a UNIX emulation layer. This is not to be confused with 'MinGW' (Minimalist GNU for Windows), which is a completely separate effort.. Но если программа использует Cygwin API, то остаться независимым от cygwin1.dll невозможно и нет статической линковки. - person RedGlyph; 29.10.2009

Вы можете посмотреть на CodeBlocks. Обычно он используется для создания приложений WxWidgets, но прекрасно сочетается с MinGW.

person epotter    schedule 28.10.2009
comment
Я использую его, чтобы поиграть с поддержкой C++0x в gcc 4.4. Иногда вылетает, но работает в обычном режиме. - person jmucchiello; 29.10.2009

На самом деле, есть вариант №3: если ваша версия Windows это позволяет, вы можете установить Microsoft Services For Unix / Subsystem для приложений Unix, а затем получите gcc от SUACommunity. У него также есть менеджер пакетов. Из этих трех вариантов этот даст вам поведение, наиболее близкое к настоящей системе Unix.

Однако получившиеся приложения не являются приложениями Win32; это приложения SUA, и для их запуска потребуется SUA. Если вы пишете код для себя, обычно это не проблема, если вы пишете код для себя, но если вы хотите писать и распространять правильное приложение для Windows, я бы посоветовал держаться подальше от всего, что пытается эмулировать Unix, так что это MinGW.

person Pavel Minaev    schedule 28.10.2009

Qt Creator стандартно поставляется с MinGW и может использоваться для создания проектов, которые на самом деле не используют Каркас Qt.

person Rob    schedule 28.10.2009
comment
Я бы сказал, пойти с Mingw, хотя бы из-за Qt Creator. Это действительно хорошо. - person Pavel Minaev; 28.10.2009
comment
Я уже упоминал об этом в своем посте (кроме ссылки) ;-) Но да, это был бы мой первый выбор для разработки с помощью gcc. Надеюсь, скоро выйдет обновление до 4.6. - person RedGlyph; 29.10.2009

На equation.com можно легко установить обернутый MinGW GCC. Нажмите «Инструменты программирования», затем «Fortran, C, C++», загрузите нужную версию, установите и используйте.

person pmg    schedule 28.10.2009

Одним из возможных способов является использование CMake, который может создать проект Visual Studio из ваших исходных кодов, а затем скомпилировать его из Visual Studio. Он также может создавать проекты для других IDE, поэтому вы можете работать на разных платформах.

person oold    schedule 28.10.2009

Я думаю, что ответ зависит от того, собираетесь ли вы использовать библиотеки или компилировать программы, ориентированные на POSIX или цель на основе POSIX. Именно для этого предназначен Cygwin, а MinGW больше предназначен для компиляции программ для Windows с использованием GCC.

person Michael Burr    schedule 29.10.2009

Другой вариант — TDM MinGW: http://www.tdragon.net/recentgcc/

По сути, это неофициальный форк MinGW с последним компилятором GCC, доступным как для 32-, так и для 64-битных машин с Windows. Его используют даже некоторые разработчики MinGW.

Equation Gcc еще лучше: http://www.equation.com/servlet/equation.cmd?fa=fortran

person TyTN    schedule 08.02.2010
comment
Это не вилка; просто они выпускают намного чаще, чем официальный mingw. - person F'x; 08.02.2010