2009-10-28 3 views
9

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

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

+0

Субъективный вопрос. Я предпочитаю mingw, потому что вы не кодируете уровень совместимости. Предполагая, что вам нужна бесплатная (как в пивной) среде, все еще есть некоторые варианты, которые вы пропустите - выпуски Express Visual Studio или версия командной строки VC++. – asveikau

ответ

7

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

Но в целом VC++ Express - это путь для разработки только окон.

+0

Если вы используете Visual Studio Express, вы не можете законно создавать коммерческие приложения, не нарушая условий обслуживания. – Andres

+10

@ Андрес: это просто ложь. См. Http://www.microsoft.com/express/support/faq/ –

+1

@Andres: # Можно ли использовать Express Edition для коммерческого использования? Да, лицензий для приложений, созданных с использованием Visual Studio Express Edition, не существует. –

5

Существует всегда вариант использования -mno-cygwin с Cygwin для компиляции с библиотеками Windows, как MinGW делает:

gcc -mno-cygwin file.c -o test 

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

Edit:

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

+0

Флаг -mno-cygwin не создает статический двоичный файл, он создает тот, который не связан с cygwin.dll - по сути, «голой» программой win32. На практике (по модулю такие вещи, как разное генерирование кода из разных версий компилятора) это именно то, что вы получаете от компилятора mingw. –

+0

Правильно, спасибо, что указали, что Энди, я отредактирую ответ. – RedGlyph

+0

@ Энди: Я действительно не знаю, но не будет ли Cygwin libc (и, возможно, некоторые другие фонды) зависить от cygwin.dll? То есть если вы делаете -mno-cygwin, разве вы не будете ограничиваться только Win32 API? –

0

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

3

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

+0

Я использую его для игры с поддержкой gcc 4.4 C++ 0x. Иногда случается сбой, но в нормальном случае. – jmucchiello

1

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

+0

Я бы сказал, пойдите с Mingw, хотя бы из-за Qt Creator. Это действительно хорошо. –

+0

Я уже упоминал об этом в своем посте (кроме ссылки) ;-) Но да, это был бы мой первый выбор для разработки с gcc. Надеюсь, с обновлением до 4.6 скоро. – RedGlyph

0

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

1

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

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

0

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

0

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

Это в основном неофициальная вилка MinGW с последней GCC компилятора доступны как для 32- и 64-разрядные окна машины. Даже некоторые разработчики MinGW сами используют его.

Уравнение Gcc еще лучше: http://www.equation.com/servlet/equation.cmd?fa=fortran

+0

Это не вилка; они просто выпускают гораздо чаще, чем официальные средства. –