Как сделать приложение на c в codeblocks

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

Всем привет! Начала разбираться с Code Blocks. везде информация расплывчатая и кусочечная.)) Может кто то сталкивался, возможно ли средствами, которые предоставляет Code Blocks (wxWidgets) писать небольшие приложения под Android? если да, то может кто - то поделится информацией - как? буду рада любым отзывам и пожалуйста не язвите!

Можно писать приложения под Windows, код которых можно пересобрать под Android.
Мой способ. Удобно отлаживать программу как обычное виндовое приложение.

это интересно, то есть делаешь обычное интерфейс приложение, а в чем пересобирать под андроид? в code blocks? просто у меня поставлена задача изучить code blocks. А везде пишут отрывками и не понятно, есть ли в нем такая возможность.

Len4onok777
> поставлена задача изучить code blocks
а зачем тогда андроид?

Не правильно объяснила. Изучить Code Blocks для того, чтобы узнать, можно ли с его помощью писать что то под андроид или Windows Mobile, айфон..является ли он средством (с помощью wxWidgets) для создания интерфейса к нему, ну и соответственно, программирование этого самого интерфейса, чтобы потом это приложение использовать на телефоне. вот как. wxWidgets is a C++ library that lets developers create applications for Windows, OS X, Linux and UNIX on 32-bit and 64-bit architectures as well as several mobile platforms including Windows Mobile, iPhone SDK and embedded GTK+. Вроде пишут, что можно. но не могу найти. КАК?! какой то исходник..или пример..может кто то сталкивался и может поделиться опытом. Главное понять направление, сам принцип, с чего начать. Буду рада любому отзыву!

Len4onok777
Code::Blocks это же опенсорсная IDE для С++, не более того. Проще уж взять Android NDK, прикрутить его к Eclipse и писать на том же срр, если душа не лежит к Java (или если учебная цель именно такая).
>wxWidgets is a C++ library
Вроде бы, очевидно, что это просто библиотека, которую можно вызывать откуда-то.

Сегодня я хочу поделиться своим опытом компилирования CodeBlocks из исходников под Windows 7/10. Для начинающих этот увлекательный процесс изобилует подводными камнями и особенностями.


Устанавливаем среду CodeBlocks

Замечание: Версия компилятора должна быть относительно свежей. В данном случае это gcc 8.1.0.

Устанавливаем СodeBlocks по пути, не содержащем длинные имена. Например в папку C:\Soft. Далее необходимо прописать в переменную Path путь к папке бинарных файлов MinGW "C:\Soft\codeblocks\МinGW\bin". Это можно сделать нажав Win + Pause/Break, перейти в Дополнительные параметры системы и открыть Переменные среды. Изменить можно либо системную переменную Path, либо переменную Path среды текущего пользователя (если все операции далее будут выполняться под ним).

Добавить путь к MinGW

Добавить путь к MinGW

Замечание: Установленный в системе компилятор MinGW ( gcc.exe ) должен быть один в системе, либо при запросе из командной строки быть основным доступным. Если по какой-то причине у Вас в системе есть несколько версий данного компилятора, то самым простым способом будет временно переименовать папки с другими его версиями.

Если все правильно сделано, то при вводе во вновь открытой командной строке команды gcc -v должна появиться информация о настройках и версии компилятора.

Следующим шагом необходимо настроить установки компилятора в CodeBlocks. Для этого запускаем CodeBlocks, и в параметрах Settings > Compiler > Toolchain executable настраиваем путь к папке MinGW. Параметры по умолчанию я заменил так:

C compiler: gcc.exe

C++ compiler: g++.exe

Linker for dynamic libs: g++.exe

Остальные оставил как есть:

Настройки компилятора CodeBlocks

Настройки компилятора CodeBlocks

Библиотека wxWidgets

Скачиваем исходники актуальной версии wxWidgets с сайта. На сегодня это версия wxWidgets-3.1.5. Файлы для Windows упакованы в вариантах Zip и 7z.

Создаем рабочую папку проектов C:\codeblocks\ . Распаковываем архив, получившуюся папку wxWidgets-3.1.5 переносим в C:\codeblocks\ . Необходимо также создать глобальную переменную WXWIN=c:\codeblocks\xWidgets-3.1.5 .


Прежде, чем приступать к сборке, необходимо настроить файл setup.h под требования сборки исходников CodeBlocks. Для Windows открываем в IDE файл wxWidgets - (путь_WXWIN)\include\wx\msw\setup.h

Сохраняем файл setup.h и копируем его из (путь_WXWIN)\include\wx\msw\setup.h в (путь_WXWIN)\include\wx\ .

Важно: Эти два файла всегда должны быть одинаковыми.

Далее wxWidgets необходимо собрать. Существует множество вариантов и опций сборки данной библиотеки, определяющих дальнейшие варианты ее использования в проектах. Так опция MONOLITHIC определяет, будут ли при компиляции библиотеки упакованы в единый файл. Опция SHARED задает тип библиотеки: статическая или динамическая. Опция BUILD определяет, будет ли библиотека поддерживать отладку (debug/release).

Я решил собирать сразу и статические, и динамические библиотеки для debug и для release. Эта задача определила мне 4 варианта запуска процесса со следующими ключами: (SHARED=0 MONOLITHIC=1)

SHARED=0 BUILD=debug - статическая отладочная библиотека

SHARED=0 BUILD=release - статическая библиотека для релиза

SHARED=1 MONOLITHIC=1 BUILD=debug - единая динамическая отладочная библиотека

SHARED=1 MONOLITHIC=1 BUILD=release - единая динамическая библиотека для релиза

Для сборки я сделал cmd скрипт, позволяющий частично автоматизировать подготовку и запуск процесса.

Сначала выполняется очистка результатов предыдущих попыток и удаляются каталоги с присутствующим файлом настроек setup.h, который при его отсутствии копируется из (путь_WXWIN)\include\wx\ . Удаление каталогов с данным файлом необходимо на случай его изменения. Так актуальный файл гарантированно будет скопирован в нужные каталоги при сборке. Сборка запускается в 4х независимых cmd процессах, что позволяет несколько полнее загрузить процессор (если у него несколько ядер и потоков) и этим ускорить процесс. Сам процесс сборки у wxWidgets обычно происходит стабильно успешно, но занимает длительное время. У меня обычно на это уходит до 3х часов. В итоге в папке lib wxWidgets появляются две подпапки - gcc_dll и gcc_lib c полным набором релизных и отладочных библиотек. Разница в названиях таких библиотек в наличии 'суффикса' d в имени файла.

Дальше необходимо открыть среду CodeBlocks и в меню Settings > Global Variables добавить переменные wx, wx31, wx31_64. В наборе данных указывается полные пути к папке wxWidgets, вложенным папкам include и lib:

lib = C:\codeblocks\wxWidgets-3.1.5\lib

Глобальный путь lib указываем к папке со статически линкуемым набором библиотек.


В принципе среда CodeBlocks может и сама запрашивать глобальные переменные, если такие встречаются в проекте.

Теперь можно попробовать собрать тестовый wxWidgets проект, чтобы убедиться, что все сделано правильно. В опциях при создании проекта выбираем wxWidgets 3.1.x (wxSmith, Frame Based). В процессе работы мастера проекта можно увидеть применение уже созданной переменной wx на странице, где требуется указать расположение wxWidgets. Здесь ничего менять не надо, т.к. нужные настройки уже существуют.


Далее нужно отметить сборку проекта Monolithic, т.к. наша библиотека wxWidgets собиралась именно с такой опцией. Также необходима опция Enable unicode.


После успешной проверки сборки WX проекта можно переходить непосредственно к сборке CodeBlocks из исходников.

Сборка CodeBlocks

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

Замечание: Исходники CodeBlocks для сборки скачивайте из SVN репозитория проекта.

Настройка подключения к проекту CodeBlocks Экспорт ветки репозитория Сохраняем локально в проекты

Теперь у нас есть актуальные исходники проекта codeblocks для сборки.

Для работы скриптов при сборке проекта codeblocks необходимо наличие в системе доступной для запуска из консоли утилиты Zip. У кого такой утилиты нет, ее можно скачать и установить из источника, прописав в системной переменной Path путь к исполняемому файлу. Утилита должна находиться и выполняться из cmd.

Запускаем установленную ранее IDE CodeBlocks, открываем проект CodeBlocks_wx31_64.workspace из папки C:\codeblocls\codeblocks\src\ . Как видно, проект ориентирован на сборку с wxWidgets 3.1.x и x64. В папке присутствуют и другие проекты, но использованный мной компилятор изначально собирает проекты под 64-битную ОС.

На понимание этих тривиальных фактов и исправление у меня ушло пару дней (и опять не одна пересборка wxWidgets).

При открытии проекта IDE нашла и запросила очередную глобальную переменную cb_release_type. Это флаг типа сборки, в поле base вводим -g для сборки с отладочной информацией (либо -O2 для релизной сборки с оптимизацией), и закрываем окно.


В списке проектов находим NassiShneiderman wx3.1.x . Его необходимо отключить, т.к. он требует зависимости, решения к которым я пока не нашел. Отключаем в меню Properties данного проекта на вкладке Build target . Во всплывающем списке Platform нужно снять галку с Windows и поставить на Unix или Mac. После этого данный проект будет исключен из списка компиляции. Среда CodeBlocks при этом может внезапно обнаружить глобальную переменную boost. Оставляем ее как есть (invalid).

Запускаем сборку всего Workspace и ждем ее окончания. После окончания сборки текущий Workspace можно закрыть.

Теперь необходимо запустить скрипт Update31_64.bat из папки проекта codeblocks. Переходим в папку C:\codeblocks\codeblocks\src и запускаем данный скрипт. Происходит магические действия по подготовке и упаковке бинарников собранного ранее проекта.

После этого копируем библиотеку wxmsw315u_gcc_custom.dll из папки C:\codeblocks\wxwidgets-3.1.5\lib\gcc_dll в папку C:\codeblocks\codeblocks\src\devel31_64. Закрываем открытую ранее IDE CodeBlocks и пробуем запустить файл codeblocks.exe из C:\codeblocks\codeblocks\src\devel31_64.

Запуск скомпилированного CodeBlocks Это работает

И так, кратко резюмирую основные трудности:

Компилятор для всех выполняемых работ должен быть один.

Версия компилятора должна быть актуальной и стабильной

Библиотека wxWidgets также должны быть актуальной.

Исходники codeblocks необходимо брать из репозитория.

Важно помнить разрядность собранных библиотек wxWidgets и выбирать соответствующий проект codeblocks.

Изменение системных переменных среды в загруженной IDE не обновляются, требуется ее перезапуск.

По мере того, как программы становятся больше, в целях организации или повторного использования их обычно разделяют на несколько файлов. Одним из преимуществ работы с IDE является то, что они значительно упрощают работу с несколькими файлами. Вы уже знаете, как создавать и компилировать однофайловые проекты. Добавить новые файлы в существующие проекты очень просто.

Лучшая практика

Когда вы добавляете в проект новые файлы исходного кода, давайте им расширение .cpp .

Для пользователей Visual Studio

В Visual Studio кликните правой кнопкой мыши на папке Исходные файлы (Source Files) в окне Обозревателя решений (Solution Explorer) и выберите Добавить (Add) → Создать элемент… (New Item…).

Рисунок 1 Добавление нового файла в проект в Visual Studio

Рисунок 1 – Добавление нового файла в проект в Visual Studio

Убедитесь, что у вас выбран Файл C++ (.cpp). Дайте новому файлу имя, и он будет добавлен в ваш проект.

Рисунок 2 Создание нового файла в проекте в Visual Studio

Рисунок 2 – Создание нового файла в проекте в Visual Studio

Примечание. Если вы создаете новый файл из меню Файл (File), а не из своего проекта в обозревателе решений, новый файл не будет добавлен в ваш проект автоматически. Вам придется добавить его в проект вручную. Для этого кликните правой кнопкой мыши на папке Исходные файлы (Source Files) в окне Обозревателя решений (Solution Explorer) и выберите Добавить (Add) → Существующий элемент (Existing Item), а затем выберите свой файл.

Теперь, когда вы компилируете свою программу, вы должны увидеть, как компилятор перечисляет имя вашего файла при компиляции.

Для пользователей Code::Blocks

В Code::Blocks перейдите в меню File (Файл) и выберите New (Создать) → File… (Файл…).

Рисунок 3 Создание нового файла в Code::Blocks

Рисунок 3 – Создание нового файла в Code::Blocks

В диалоговом окне New from template (Создать из шаблона) выберите C/C++ source (Исходный файл C/C++) и нажмите Go (Перейти).

Рисунок 4 Создание нового исходного файла C/C++ в Code::Blocks

Рисунок 4 – Создание нового исходного файла C/C++ в Code::Blocks

На этом этапе вы можете увидеть или не увидеть приветствие в диалоговом окне мастера создания исходного файла C/C++. Если да, щелкните Next (Далее).

Рисунок 5 Диалоговое окно мастера создания исходного файла C/C++

Рисунок 5 – Диалоговое окно мастера создания исходного файла C/C++

На следующей странице мастера выберите C++ и нажмите Next (Далее).

Рисунок 6 Выбор языка при создании нового исходного файла в Code::Blocks

Рисунок 6 – Выбор языка при создании нового исходного файла в Code::Blocks

Теперь дайте новому файлу имя (не забудьте расширение .cpp ) и выберите все конфигурации сборки. Наконец, выберите Finish (Готово).

Рисунок 7 Указание имени файла и выбор конфигураций сборки

Рисунок 7 – Указание имени файла и выбор конфигураций сборки

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

Для пользователей GCC/G++

Из командной строки вы можете создать дополнительный файл самостоятельно, используя свой любимый редактор, и дать ему имя. Когда вы компилируете свою программу, вам нужно будет включить в строку компиляции все соответствующие исходные файлы. Например:

где main.cpp и add.cpp – это имена ваших исходных файлов, а main – имя выходного файла.

Пример с несколькими файлами

Когда компилятор достигает вызова функции add в строке 5 в функции main , он не знает, что такое add , потому что мы определили add только в строке 9! Нашим решением было либо переупорядочить функции (поместив сначала add ), либо использовать для add предварительное объявление.

Теперь посмотрим на аналогичную программу из нескольких исходных файлов:

Ваш компилятор может решить сначала скомпилировать либо add.cpp , либо main.cpp . В любом случае main.cpp не скомпилируется, что приведет к той же ошибке компилятора, что и в предыдущем примере:

Причина точно такая же: когда компилятор достигает строки 5 файла main.cpp , он не знает, что такое идентификатор add .

Помните, что компилятор компилирует каждый файл отдельно. Он не знает о содержимом других исходных файлов и не запоминает что-либо, что он видел из ранее скомпилированных исходных файлов. Таким образом, даже если компилятор, возможно, видел определение функции add ранее (если он сначала скомпилировал add.cpp ), он этого не запомнил.

Эта ограниченная видимость и короткая память являются преднамеренными, чтобы файлы могли иметь функции или переменные, у которых одинаковые имена, но которые не конфликтуют друг с другом. В следующем уроке мы рассмотрим пример такого конфликта.

Наши варианты решения здесь такие же, как и раньше: поместить определение функции add перед функцией main или удовлетворить компилятор предварительным объявлением. В этом случае, поскольку функция add находится в другом файле, вариант изменения порядка определений не подходит.

Лучшее решение здесь – использовать предварительное объявление:

main.cpp (с предварительным объявлением):

add.cpp (остается прежним):

Теперь, когда компилятор компилирует main.cpp , он будет знать, что такое идентификатор add , и будет удовлетворен. Линкер соединит вызов функции add в main.cpp с определением функции add в add.cpp .

Используя этот метод, мы можем предоставить файлам доступ к функциям, которые находятся в другом файле.

Попробуйте скомпилировать add.cpp и main.cpp с предварительным объявлением. Если вы получили ошибку линкера, убедитесь, что вы правильно добавили add.cpp в свой проект или строку компиляции.

Что-то пошло не так!

Есть много вещей, которые могут пойти не так, когда вы в первый раз попытаетесь работать с несколькими файлами. Если вы попробовали приведенный выше пример и столкнулись с ошибкой, проверьте следующее:

1. Если вы получаете ошибку компилятора о том, что add не определена в main , вы, вероятно, забыли предварительное объявление для функции add в main.cpp .

2а. … наиболее вероятная причина в том, что add.cpp неправильно добавлен в ваш проект. При компиляции вы должны увидеть в списке компиляции и main.cpp , и add.cpp . Если вы видите только main.cpp , значит add.cpp определенно не компилируется. Если вы используете Visual Studio или Code::Blocks, вы должны увидеть add.cpp в списке в обозревателе решений / на панели проекта в левой части IDE. Если его не видно, кликните на проекте правой кнопкой мыши и добавьте этот файл, а затем попробуйте скомпилировать снова. Если вы компилируете из командной строки, не забудьте включить main.cpp и add.cpp в свою команду компиляции.

2b. … возможно, вы добавили add.cpp не в тот проект.

Резюме

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

Мы будем много работать с несколькими файлами, как только перейдем к объектно-ориентированному программированию, поэтому сейчас самое подходящее время, чтобы убедиться, что вы понимаете, как добавлять и компилировать проекты с несколькими файлами.

Напоминание: всякий раз, когда вы создаете новый исходный файл (.cpp), вам нужно будет добавить его в свой проект, чтобы он компилировался.

Основные характерные особенности среды:

  • Кроссплатформенная IDE с открытым кодом, основанная на библиотеке wxWidgets
  • Компактное ядро и расширение функционала посредством множества плагинов
  • Встроенный интерфейс под множество компиляторов и тулчейнов, как свободных, так и проприетарных
  • Множество визардов для быстрого создания шаблона проекта как для разнообразных микропроцессорных архитектур (AVR, ARM, PowerPC), так и для библиотек и тулкитов под РС: GTK, Qt, WxWidgets, OpenGL итд.
  • Компактная и интуитивно понятная структура меню, обеспечивающая быструю настройку среды
  • Огромное количество забавных и полезных рюшечек, которые я до сих пор с удивлением иногда нахожу :)

Итак, начнем по порядку.

Как и мощные профессиональные оболочки, имеет развитые средства поддержки проектов, включая workspace для объединения родственных проектов, общие межпроектные зависимости, множественные цели (target)

Предусмотрен механизм импорта проектов из других сред разработки


а также экспорта открытого файла в разнообразные форматы:


Отладка

Лично я никогда отладками не пользовался, и даже ноги JTAG на платах остаются неразведенными, но многие жизни без него не представляют. Поэтому спешу успокоить: CodeBlocks ничуть не хуже в этом плане, чем остальные. Вот цитата с оф. сайта:

  • Full breakpoints support:
    • Code breakpoints
    • Data breakpoints (read, write and read/write)
    • Breakpoint conditions (break only when an expression is true)
    • Breakpoint ignore counts (break only after certain number of hits)

    Интерфейс

    • Подсветка синтаксиса, настраиваемая и расширяемая (хотя куда уж шире — см. скриншоты ниже)
    • Сворачивание кода (folding) для С/С++ и XML
    • Система вкладок в рабочем окне и дополнительных фреймах
    • Свободная планировка фреймов и произвольное деление (split) рабочего окна
    • Автодополнение кода
    • Обозреватель классов
    • Быстрое переключение между .c и .h файлами (swap)
    • Список открытых файлов для быстрой навигации, когда табов уже не хватает
    • TODO list ну и многое другое, реализуемое плагинами.

    Автодополнение


    Автодополнение (Code-completion). После ввода 4-х символов выпадает список с подходящими идентификаторами. Количество начальных символов настраивается, как и многие другие параметры.



    Вводим точку после имени структуры — выпадает список полей. То же самое со структурными операторами -> и ::

    Выбор варианта подсветки исходного текста — без комментариев:


    Контекстное меню (правой кнопкой в окне редактора) весьма развито:


    Чуть ниже — запуск плагина автоформатирования AStyle, который форматирует текущий файл по одному из шаблонов:


    То, что в меню указаны хоткеи не для всех пунктов, отнюдь не означает, что их нельзя настроить.


    Более того, настройки можно разложить по разным профилям.

    Можно сплитить рабочий экран на произвольное количество окошек.


    Легко и непринужденно — простым перетаскиванием вкладок к границам основного окна.
    Перетаскивая вкладки из дополнительных окон в основное или соседние, можно объединять их обратно.

    Ещё одна мегафича, которая мне нравилась ещё в IARe, это быстрая навигация вперед/назад: Alt + стрелки вправо/влево.

    Наверно, я уже утомил своим перечислением, хотя не затронул многих интересных вещей. Пора переходить к практической части.

    Установка

    Если Вы пользователь Windows, то идем на страницу загрузки и готовимся потратить от 23 до 74М траффика (в зависимости от MinGW).
    Сторонники Светлой Стороны могут для начала поискать в своем менеджере пакетов.
    Имеются готовые сборки .deb (debian/ubuntu) и .rpm (Fedora, SUSE, Mandriva)

    Чтобы был доступен весь функционал, нужно при установке отметить галочку включения дополнительных плагинов. Хотя, можно их добавить и после установки, но это не так удобно. В конце концов, проще после некоторых экспериментов отключить или удалить неиспользуемые.

    Также, при установке в windows присутствует опция MinGW, по которой C::B устанавливает свой личный экземпляр MinGW внутри себя.
    Забегая вперед, скажу, что эта штука может конфликтовать с другими win-gcc тулчейнами, находящимися в системе, например, с CygWin, так что в случае необъяснимых ошибок или подвисаний проблема скорее всего в этом.
    В некоторых источниках рекомендуют ставить в последовательности wxWidgets (если нужно) — MinGW — CB(без MinGW).

    Итак, установили.
    Пока пыл не угас, попробуем по-быстрому чего-нибудь состряпать.
    Например, окошко WinGUI.

    1. Создаем новый проект. File-> New-> Project (или ссылку Create a new project на странице приветствия).


    Далее следуем инструкциям, заполняем необходимые поля и в конечном итоге получаем проект-шаблон с готовой центральной формой.


    Запускаем. Жмем Build, Run или Build and run

    [ 50.0%] Compiling: main.cpp
    [100.0%] Linking executable: bin\Release\ggg.exe
    Output size is 7.00 KB
    Process terminated with status 0 (0 minutes, 0 seconds)
    0 errors, 0 warnings
    Build log saved as:
    file://D:%5cwork%5cEXPERIMENTS%5cCB_Wx%5cggg%5cggg_build_log.html


    Вуаля:

    Ну, кто тут спрашивал, в чем бы под винду написать? :)
    Шучу, конечно. На самом деле это была просто иллюстрация, естественно, что на голом WinGUI никто писать не будет, когда есть возможность пользоваться удобными фреймворками типа wxWidgets или Qt.

    В общем, немного сумбурно получилось, но общее представление, надеюсь, дает.

    Свободная кроссплатформенная среда с открытым кодом и расширяемая с помощью плагинов, которая имеет большинство функций, имеющихся в других продуктах, как коммерческих, так и свободных, весьма нетребовательна как к объему памяти и носителей, так и к производительности системы. В частности, работает заметно шустрее эклипса. На мой взгляд, идеальное средство для разработки программ для микроконтроллеров и небольших сервисных программ (например, консольных).

    Если будет интерес к теме, в следующий раз опишу процесс создания микроконтроллерного проекта.

    Материалы по теме:

    Комментарии ( 145 )

    я бы проголосовал за немикроконтроллерный
    и интересуют компоненты TCP/UDP и Comport (если там вообще есть компоненты)

    Можно сдружить и с другими языками. Или не очень удобно в духе N++, или поудобней, но тогда придется писать плагин-сет.
    Хотя с плагинами поддержки других языков и правда не густо… Впрочем, и самих тех языков с полпинка разве что Free Pascal вспоминается. Остальные или со своей IDE, или известны полутора анонимусам.
    Кстати, среди поддерживаемых компилеров есть и DigitalMars D Compiler.

    Парсинг и сборку. Последнюю правда кое-как можно прикрутить, поковырявшись в настройках плагина Compiler. Но без Code Navigation как-то грустно

    >> например, поддерживаются только языки С и С++

    Странно, а я как-то по незнанию в нём на Верилоге писал… Вот блин, а оказывается нельзя… =\

    я как-то гуглил их форум на тему прикручивания пацкаля, они там писали что поддерживаются только С/С++ и забросил.

    Ну если на один раз, тогда да, о чём разговор. А если нужен инструмент для постоянной работы, то почему-бы и не поточить топор?

    Ну не знаю, я, когда Верилог приделывал, до выковывания топорища так и не дошёл — заленился и ограничился заточкой имеющегося. Конечно полноценного кодкомпилшена не было, но кейворды дополнялись нормально. Были ещё кое-какие косяки, но в целом пользоваться было в разы удобнее, чем штатным квартусом.

    Множество плагинов и визардов для программирования разнообразных микропроцессорных архитектур (AVR, ARM, PowerPC)

    и избыточно. Половина пунктов никогда и не понадобится, а вот часто используемые пункты редактирования перенесены во вложенное меню. Возможно это дело настраивается, но всё-равно неприятно, что для комфортной работы в среде её надо пилить.

    Ну да, Упомянули МК, показали убунту, а приложение создали под винду, после чего повтыкали скриншотов в неуловимой последовательности. И всё это без каких-либо разделов.

    Статья сырая и только отобьёт интерес к среде.

    Тащемта, так и есть. Но она открытая и модульная — это уже более редкий зверь. Относительно легковесная и симпатичная, опять же. Впрочем, мне действительно нравятся только Delphi IDE, BDS и MSVS 7+.

    и избыточно. Половина пунктов никогда и не понадобится, а вот часто используемые пункты редактирования перенесены во вложенное меню.

    Выделить — мышкой, а скопировать быстрее хоткеем. Да и не самая частая операция это для программинга, во всех IDE Copy/Paste даже на тулбар не вынесены.

    >>во всех IDE Copy/Paste даже на тулбар не вынесены.
    Это у вас IDE какое-то своебразное: посмотрел в IAR EW, MSVS 2008, AVRStudio — у всех copy-paste на тулбаре.

    Хм, в студии разве вынесено (по умолчанию)? Не замечал.
    В Delphi IDE точно нет, а в ней я работаю чаще всего…
    Что до IAR'а и AVRStudio — это блокноты, им эти кнопки положено иметь)

    Ну вот, по одной среде сделали вывод о всех.
    А мнежду прочим довольно много людей дельфи за среду программирования не считают даже, так что же теперь, говорить что все не считают?

    Ну я типа забыл и вообще меня понесло)
    Кстати, на самом деле в Code::Blocks эти кнопки тоже вынесены в тулбар, так что на то, что в меню они немного спрятаны не так существенно. А с ними оно было бы куда длиннее.

    не совсем. выделяем текст, ПКМ и далее 2 версии: N пунктов вниз (что чаще) либо M пунктов вверх.
    При использовании же кнопок тулбара расстояние всегда зависит от месторасположения выделенного текста.
    Казалось бы мелочь, но знаете как к ней привыкаешь. Рука на автомате выполняет требуемую последовательность при пкм, без привлечения глаз для поиска тулбара и кнопок.

    Все, что ты перечислил, на самом деле, только внешние и совсем не обязательные аттрибуты XP. Там смысл совершенно в другом. Впрочем, эта тема весьма и весьма обширная, в пост явно не впихнуть.

    Для мелких проектов, коими является практически вся ембедщина, ХР, возможно, не так уж сильно необходим. Да и рефакторинг сишного/плюсового кода штука довольно геморройная, поскольку поддержка в IDE для этого дела достаточно слабая, во всяком случае в сравнении с той же жабой. А без постоянного рефакторинга применять ХР сложно, если вообще возможно, поскольку это, практически, краеугольный камень Agile методик вообще, и ХР в частности.

    Для мелких проектов, коими является практически вся ембедщина, ХР, возможно, не так уж сильно необходим

    Я бы не сказал. Agile методологии рулят даже в небольших проектах.

    Рассказывая новичкам об agile, я часто приводу такое сравнение: водопад это стрельба неуправляемым артиллерийским снарядом из-за горизонта. Agile — это стрельба самонаводящимися ракетами. Если цель неподвижна и ее координаты точно известны — то без разницы чем стрелять. А если мы только приблизительно знаем, где эта цель находится или цель движется, то накрыть ее артиллерией можно только залпом, а самонаводящейся ракеты хватит и одной. Снаряд/ракета — это, по сути, код проекта. Цель — требования заказчика.

    Решение

    Я бы предложил собирать библиотеки wxWidgets с помощью блоков code: source, а не загружать двоичную библиотеку, созданную неизвестным компилятором.

    Вот инструкции по сборке статических библиотек wxWidgets с помощью code: block. Соберите библиотеки DLL, измените шаг 8. (Обратите внимание, что ваши приложения будут запускаться быстрее, если вы используете статическую библиотеку.

    Распакуйте в папку. В моей системе я использую C: \ Users \ James \ code \ wxwidgets-3.1.0

    Откройте командное окно.

    Перейдите в папку code :: blocks mingw. В моей системе это C: \ Program Files (x86) \ CodeBlocks16 \ MinGW

    перейдите в папку wxwidgets. В моей системе C: \ Users \ James \ code \ wxwidgets-3.1.0

    Установите глобальную переменную wxwidgets code :: blocks следующим образом:

    Читайте также: