IT Novella
Eclipse — одна из наиболее популярных свободных кроссплатформенных сред разработки.
Для использования этой IDE для разработки на C++ необходимо установить компилятор и некоторые другие инструменты. Необходимые компоненты включает в себя коллекция бесплатных программ и библиотек MinGW.
Процесс установки и настройки связки MinGW и Eclipse состоит из следующих шагов:
1. Установка MinGW.
Установщик можно скачать с официального сайта mingw.org.
После установки запускаем MinGW Installation Manager (обычно он запускается автоматически), выбираем и устанавливаем пакеты mingw-developer-toolkit, mingw32-base, mingw32-gcc-g++, mingw32-gcc-objc, msys-base в разделе Basic Setup.
2. Настройка системной переменной Path.
Для корректного вызова программ, входящих в состав MinGW, необходимо изменить значение системной переменной Path.
Для этого выбираем Пуск — Мой Компьютер — Свойства системы — Дополнительные параметры системы — Переменные среды. В списке системных переменных находим переменную Path и нажимаем изменить. В конце строки добавляем ;C:\MinGW\bin\; и нажимаем ok. После этого перезагружаем компьютер.
3. Установка Eclipse.
Дистрибутив можно скачать с сайта eclipse.org. Для программирования на C++ необходимо скачать сборку IDE for C/C++ developers.
Распаковываем скачанный архив в корень диска C. Открываем каталог C:\eclipse и запускаем eclipse.exe.
После запуска необходимо указать расположение каталога workspace. Лучше его также разместить в корне диска C.
Видео с демонстрацией установки:
Источник
Настраиваем Windows для программирования OpenGL
Пост ориентирован на новичков. В нем не рассматривается настройка Visual Studio. Он научит вас настраивать некоторые текстовые редакторы на компиляцию OpenGL приложений, либо выполнять это из консоли вручную.
Недавно, наконец, вышло 8-е издание книги OpenGL programming guide, которую я ждал уже более чем 2 года. Чуть раньше я познакомился с замечательным текстовым редактором Sublime Text 2 и решил настроить его вместо установки тяжелой Visual Studio.
Итак, для начала нам нужен компилятор — я остановился на G++. Он является частью GCC, а его порт под Windows называется MinGW. С него и начнем:
MinGW
Качаем с официального сайта инсталлятор и запускаем его. Можно выбрать выкачивание свежих пакетов сразу при установке, либо обновить их вручную позже. Компиляторы Fortran, Ada и ObjC нам не понадобятся, их можно не ставить. MSYS Basic System может пригодится, его ставим. В качестве адреса я указал » C:\MinGW «, но если вас это смущает — можете выбрать другой, например, » C:\Program Files\Common Files\MinGW «.
После установки следует добавить к системной переменной PATH две новые папки: » MinGW\bin » и » MinGW\msys\1.0\bin «. Для этого заходим в Пуск -> Панель управления -> Система -> Дополнительные параметры системы; Во вкладке Дополнительно тыкаем внизу кнопку Переменные среды. Из списка системных переменных выбираем Path, и через точку с запятой дописываем полные адреса к папкам » MinGW\bin » и » MinGW\msys\1.0\bin «.
Если вы не выбирали выкачивание свежих пакетов при установке, следует обновить нужные пакеты вручную. Для этого открываем консоль (Win+R -> cmd ), и пишем следующие команды:
Обновит информацию о доступных пакетах,
Отобразит полные имена пакетов gcc и g++,
Обновит эти пакеты до последних доступных для MinGW версий.
Теперь, когда у нас есть компилятор, мы можем приступить к установке необходимых OpenGL библиотек.
Freeglut
Поскольку OpenGL это API, которое относится исключительно к графике — в него не входят функции по созданию окон или обработки устройств ввода. Тем более, решение этой задачи зависит от операционной системы. По-этому ее вынесли в отдельную библиотеку и назвали GLUT — OpenGL Utility Toolkit. Однако, последний релиз этой библиотеки был очень давно и сейчас ее подменила freeglut.
Качаем с официального сайта бинарники под MinGW. Распаковываем, freeglut.dll из папки bin кидаем в » C:\Windows\System32 » (для х86) или » C:\Windows\SysWOW64 » (для х64), или любую другую папку, которая указана в PATH. Содержимое папок include и lib можно скопировать либо в » MinGW\include » и » MinGW\lib » (так будет проще), либо в отдельные созданые папки » MinGW\freeglut\include » и » MinGW\freeglut\lib «.
На этом с freeglut все. Для его подключения нужно добавить #include
Библиотека glew позволяет определять что видеокарта поддерживает, а что — нет. Ее установка немного сложнее для нашего случая.
Качаем с официального сайта исходники, поскольку бинарники заточены под Visual Studio и нам не подойдут. Теперь эти исходники нужно скомпилировать. Я в этом практически ничего не понимаю, по-этому обратился к гуглу и нашел помощь здесь:
Распаковываем скачанный архив, открываем консоль, заходим в полученную папку и пишем следующие команды:
В результате в папке lib появилось 3 файла: glew32.dll , glew32.dll.a и glew32.a .
glew32.dll копируем туда же, куда ранее скопировали freeglut.dll , остальные 2 — в папку » MinGW\lib » либо » MinGW\glew\lib «.
Из папки include копируем содерижмое в » MinGW\include » или » MinGW\glew\include «.
На этом с glew все. Для его подключения нужно добавить #include , но сделать это необходимо перед подключением других gl библиотек.
Проверяем работоспособность
Создаем минимальный test.cpp:
Обратите внимание на функцию glutInitContextVersion — она завершит выполнение программы если ей не удалось создать контекст для указаной версии OpenGL. Чтобы узнать версию OpenGL, которую поддерживает ваша видеокарта, можно заглянуть в ее спецификацию либо скачать бинарники glew с официального сайта и запустить glewinfo.exe из папки bin . Он сгенерирует файл glewinfo.txt , в котором будет детально расписано что ваша видеокарта поддерживает, а что — нет. Иногда функционал можно расширить установкой более свежего видеодрайвера.
Открываем консоль, заходим в папку с test.cpp и пишем следующую команду:
В случае, если вы создавали отдельные папки freeglut и glew , здесь необходимо дополнительно указать соответствующие дополнительные папки include и lib . Тогда пример команды выглядит так:
Флаг -Wl,—subsystem,windows указывает компилятору что он должен создать графическое приложение, а не консольное.
Если все получилось, должен получится файл test.exe , который при запуске создает белое окно 512х512.
Когда вы захотите поделится своим приложением, убедитесь что вместе с исполняемым файлом передаете используемые библиотеки — freeglut.dll и glew32.dll .
Sublime Text 2
Ну и напоследок, приведу пример настройки Sublime. Скачать его можно отсюда, вводные видео-уроки на английском языке можно глянуть здесь.
После установки открываем файл настройки билда С++:
» C:\Users\%Username%\AppData\Roaming\Sublime Text 2\Packages\C++\C++.sublime-build »
Сохраняем его копию как
» C:\Users\%Username%\AppData\Roaming\Sublime Text 2\Packages\User\C++\С++ OpenGL.sublime-build «
Строчку
дополняем подключением библиотек:
Аналогично, строчку
дополняем до
Если вы создавали отдельные папки под freeglut и glew, эти команды следует дополнить указанием адресов дополнительных папок include и lib .
Для того чтобы Sublime не отказывался выводить кириллицу в свою консоль, после
добавляем
Теперь, когда у нас открыт test.cpp , выбираем Tools -> Build system -> C++ OpenGL.
Нажимаем Ctrl+B для компиляции, Ctrl+Shift+B для компиляции и запуска.
UPD: Когда дело дошло до кода с gl-функциями из последних версий, выяснилось, что подключение заголовочного файла GL/gl.h недостаточно. В нем содержится устаревшая версия 1.1, и этот файл больше не обновляется. В дополнение к нему необходимо подключить GL/glext.h (последнюю версию которого надо скачать отсюда) и GL/wglext.h (отсюда). Для линукса последний файл заменяется GL/glxext.h (ссылка). Скачанными файлами нужно заменить их устаревшие версии по адресу » MinGW/include/GL/ «.
Источник
Сборка Mingw в Windows своими руками
В сети можно найти много описаний сборки mingw и GNU утилит под ним. Я тоже решил написать свой вариант, так как во-первых он на русском. Во-вторых используются последние стабильные исходники (по состоянию на 27.01.2011). В третьих добавлена оптимизация циклов (graphite loop optimizations). В четвертых я описываю причины выбора тех или иных опций конфигурации исходников. В пятых, чтобы не забыть.
Зачем собирать mingw самому?
- Для того, чтобы сконфигурировать компоненты так как нужно мне, а не той тысяче пользователей, которые скачивают стандартный пакет с официального сайта.
- Чтобы я сам определял какие компоненты мне нужны в виде shared библиотек с dll-ками, а какие я линкую статически.
- Чтобы быть уверенным, что gcc работает максимально эффективно.
- Чтобы исключить возможные закладки в исполняемые модули.
- Чтобы лучше понять как собираются и устанавливаются GNU утилиты.
Каждый может найти причину для собственноручной сборки.
Что понадобится?
Как ни странно, но для сборки mingw нужен сам mingw. Товарищи постарались и сделали аккуратную программу установки, которая сама скачает и установит нужные пакеты. Она лежит на официальном сайте.
Помимо самого mingw при установке выбираем «C++ Compiler» и «MinGW Developer ToolKit». Ставим в C:\MinGW.
Не обойтись без терпения, настойчивости и удачи!
Сборка
Создаем на самом быстром винчейстере рабочую папочку C:\mbuild. Все исходники складываем в C:\mbuild\distrib. Выращивать mingw будем в C:\mbuild\release. Запускаем скачанный msys…
Небольшое замечание. В большинстве инструкций сказано сложить исходники gmp, mpfr и mpc в папку к gcc — он соберет их автоматически. Мы так делать не будем, потому что ходим прикрутить к gcc CLooP, а он зависит от gmp. То есть нам придется собирать gmp до того, как мы приступим к конфигурации gcc.
tar -xjf distrib/gmp-5.0.1.tar.bz2 && cd gmp-5.0.1
mkdir build && cd build
../configure —prefix=’/c/mbuild/release’ —enable-cxx —disable-static —enable-shared CPPFLAGS=’-fexceptions’ &>config.my.log
make -j4 &>make.my.log
make install &>install.my.log
- —enable-cxx CPPFLAGS=’-fexceptions’ — Обязательны для корректной сборки ppl
- —disable-static —enable-shared — В windows нельзя одновременно иметь shared и static версии, иначе сборка дальнейших компонентов может завершиться ошибкой. Будем собирать shared версии. Не волнуйтесь, на компилируемые с помощью mingw программы зависимость не переносится.
Очень важно не использовать ключи оптимизации CFLAGS, CXXFLAGS и LDFLAGS такие как «-s -O2 -mtune=i686» — бывали случаи когда ppl из-за этого не находил gmp.
tar -xjf ../../distrib/ppl-0.11.tar.bz2 && cd ppl-0.11
mkdir build && cd build
../configure —prefix=’/c/mbuild/release’ —disable-static —enable-shared —disable-nls —enable-threads —disable-debugging —with-gmp-prefix=/c/mbuild/release —with-cflags=’-s -O2′ —with-cxxflags=’-s -O2′ &>config.my.log
make -j4 &>make.my.log
make install &>install.my.log
- —disable-static —enable-shared — какой вариант линковки мы выбрали для gmp такой же следует выбрать и для ppl.
- —disable-nls — отключая National Language Support не будем требовать от приложения умения общаться на русском.
- —enable-threads — создаваемый mingw я буду использовать для компиляции многопоточных приложений.
- —disable-debugging — отладочная информация ни к чему — она занимает лишнее место.
- —with-gmp-prefix — сообщит где искать gmp.
- —with-cflags —with-cxxflags — некоторая оптимизация.
Во время конфигурирования windows может сообщать о том, что программа conftest не запустилась. Не паникуйте — это всего лишь результат работы скрипта configure.
CLooG/PPL
tar -zxf ../distrib/clog-ppl-0.15.10.tar.gz
cd cloog-ppl-0.15.10
mkdir build && cd build
../configure —prefix=’/c/mbuild/release’ —disable-static —enable-shared —with-ppl=/c/mbuild/release —with-gmp=/c/mbuild/release CFLAGS=’-s -O2′ CPPFLAGS=’-s -O2′ &>config.my.log
make &>make.my.log
Опции понятны из предыдущих описаний.
tar -xjf distrib/mpfr-3.0.0.tar.bz2 && cd mpfr-3.0.0
mkdir build && cd build
../configure —prefix=’/c/mbuild/release’ —disable-static —enable-shared —enable-thread-safe —with-gmp=/c/mbuild/release CFLAGS=’-s -O2′ CPPFLAGS=’-s -O2′ &>config.my.log
make -j4 &>make.my.log
make install &>install.my.log
tar -xzf distrib/mpc-0.8.2.tar.gz
cd mpc-0.8.2
mkdir build && cd build
../configure —prefix=/c/mbuild/release —disable-static —enable-shared —with-gmp=/c/mbuild/release —with-mpfr=/c/mbuild/release CFLAGS=’-s -O2′ CPPFLAGS=’-s -O2′ &>config.my.log
make -j4 &>make.my.log
make install &>install.my.log
LIBICONV
tar -xzf distrib/libiconv-1.13.1.tar.gz && cd libiconv-1.13.1
mkdir build && cd build
../configure —prefix=/c/mbuild/release —enable-shared —disable-static —disable-nls CFLAGS=’-s -O2 -mno-cygwin’ CPPFLAGS=’-s -O2 -mno-cygwin’ &>confgi.my.log
make -j4 &>make.my.log
make install &>install.my.log
Вообще, libiconv необязателен, но включить его поддержку желательно (очень полезно, если вы будете собирать другие gnu утилиты этим mingw).
- CFLAGS=’-mno-cygwin’ Для того, чтобы libiconv корректно собирался под msys следует явно указать, что мы используем не CygWin.
BINUTILS
tar -xjf distrib/binutils-2.21.tar.bz2 && cd binutils-2.21
mkdir build && cd build
../configure —prefix=/c/mbuild/release —disable-nls —enable-threads —with-gmp=/c/mbuild/release —with-mpc=/c/mbuild/release —with-mpfr=/c/mbuild/release —with-ppl=/c/mbuild/release —disable-ppl-version-check —with-cloog=/c/mbuild/release —disable-cloog-version-check CFLAGS=’-s -O2′ CPPFLAGS=’-s -O2′ &>config.my.log
make -j4 &>make.my.log
make install &>install.my.log
INCLUDE
tar -xzf distrib/mingwrt-3.18-mingw32-src.tar.gz
cp -r w32api/include /c/mbuid/release
cp -r mingwrt-3.18-mingw32/include /c/mbuild/release
tar -xjf gcc-4.5.2.tar.bz2
cd gcc-4.5.2
mkdir build && cd build
../configure —prefix=/c/mbuild/release —enable-shared=libstdc++ —enable-threads —enable-version-specific-runtime-libs —enable-languages=c,c++ —with-dwarf2 —disable-sjlj-exceptions —disable-win32-registry —disable-werror —disable-nls —disable-multilib —with-gmp=/c/mbuild/release —with-ppl=/c/mbuild/release —disable-ppl-version-check —with-cloog=/c/mbuild/release —disable-cloog-version-check —with-mpfr=/c/mbuild/release —with-mpc=/c/mbuild/release —enable-libgomp —with-libiconv-prefix=/c/mbuild/release —enable-libstdcxx-debug —enable-cxx-flags=’-s -O2′ —with-boot-ldflags=’-s’ &>config.my.log
make -j4 BOOT_CFLAGS=’-s -O2′ BOOT_CPPFLAGS=’-s -O2′ &>make.my.log
cd i686-pc-mingw/libstdc++-v3
make -j4 CFLAGS=’-s -O2′ CXXFLAGS=’-s -O2′ &>make.my.log
Runtime и W32API
W32API
cd ../../w32api
mkdir build && cd build
../configure —prefix=/c/mbuild/release CFLAGS=’-s -O2′ CPPFLAGS=’-s -O2′ &>config.my.log
make &>make.my.log
make install &>install.my.log
MingwRT
tar -xzf distrib/mingwrt-3.18-mingw32-src.tar.gz && cd mingwrt-3.18-mingw32-src
mkdir build && cd build
../configure —prefix=/c/mbuild/release CFLAGS=’-s -O2′ CPPFLAGS=’-s -O2′ &>config.my.log
make &>make.my.log
make install &>install.my.log
Из-за того, что gmp собирался не родным gcc он, скорее всего, имеет зависимости от libstdc++.dll и libgcc_s_dw2-1.dll. Первая была собрана с родным gcc, вторую придется скопировать из старого mingw. Как вариант можно пересобрать gmp в новом gcc для избавления от завимисотей.
Для уменьшения размера можете смело поудалять ненужные папки. Например share/doc.
Почти все. Для комфортной работы нам надо еще собрать make.
tar -xjf distrib/make-3.82.tar.bz2 && cd make-3.82
./configure —disable-nls —with-libiconv-prefix=’/mingw’ CFLAGS=’-s -O2′ CPPFLAGS=’-s -O2′ &>config.my.log
make -j4 &>make.my.log
cp make.exe /c/mbuild/release/bin/mingw32-make.exe
Теперь все. в папочке C:\mbuild\release получили свой аккуратный mingw. Добавляем пакетов по вкусу, оборачиваем в аккуратный скрипт и получим что-то вроде nuwen mingw. Удачных сборок!
Постскриптум: Скачанный нами пакет mingw кроме того содержит:
- mingw32-autoconf
- mingw32-automake
- mingw32-autotools
- mingw32-basic-dsdtar
- mingw32-bzip2
- mingw32-cygutils
- mingw32-expat
- mingw32-gdb
- mingw32-gendef
- mingw32-gettext
- mingw32-libarchive
- mingw32-libtool
- mingw32-mingw-get
- mingw32-mingw-utils
- mingw32-package-list
- mingw32-pdcurses
- mingw32-pexports
- mingw32-popt
- mingw32-pthreads-w32
- mingw32-xz
Источник