Рассказываем о лучших компиляторах и инструментах для разработки на С++.
Что такое компилятор C++?
Если в двух словах, то это утилита, которая преобразует написанный человеком код в язык, понятный для компьютера.
Если подробнее, то сначала надо обратиться к тому, как работает программный код. Компьютеры понимают только машинный язык (ассемблер), представляющий собой чередующиеся нули и единицы. Других прямых механизмов взаимодействия между компьютеров и человеком не существует.
Программировать, используя только бинарные символы, конечно, можно. Но это займет неприлично много времени и в несколько раз усложнит процесс разработки программного обеспечения любого порядка (разработчики превратятся в вымирающий вид). Поэтому люди придумали языки программирования более высокого класса, чтобы было легче взаимодействовать с ПК.
Ассемблер общается с аппаратным обеспечением напрямую. Языкам в духе C и C++ требуется компилятор, который сможет превратить более очеловеченный код в машинный. Похожим образом работают более «высокие» языки наподобие JavaScript и Python. Только они сначала преобразуются в С++, а потом в ассемблер. Все сводится к одному.
И мы снова возвращаемся к процессорам, которые понимают только нули и единицы. Для них нужен переводчик, который будет низводить до примитивного состояния код С++. Это и есть компилятор.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Как скомпилировать С++
Для этого нужна специальная программа. Она считывает код и начинает его трансформировать (переводить с одного языка на другой). Некоторые из них включают в себя текстовый редактор, куда можно вставить код, а некоторые работают в командной строке и взаимодействуют с готовыми скриптами.
Обычно процесс компиляции заключается в введении команды для запуска компилятора и передачи пути до файла-скрипта. Иногда компиляцию удается запустить через графический интерфейс. Все зависит от используемого ПО.
После запуска интерпретатор кода считывает содержимое файла, находит там директивы и флаги, подключает внешние необходимые библиотеки, а потом передает необходимые данные процессору. Ну а тот уже делает то, что нам вздумалось: пролистает страницу на сайте или запустит игру.
Топ лучших компиляторов и IDE для C++
Большая часть компиляторов существует в виде программного обеспечения, устанавливаемого в систему. Частенько они объединены с IDE, полноценной средой разработки, которая включает в себя текстовый редактор с подсветкой синтаксиса, автодополнением кода, файловым менеджером и массой других возможностей, необходимых для комфортного программирования.
Visual Studio Code
Тип: IDE
Цена: Бесплатно
Поддерживаемые платформы: Windows, Linux, macOS
Это популярнейший редактор текста для программистов, который можно превратить в мощную IDE, установив дополнительные плагины. Популярность VS Code обоснована его производительностью, открытым исходным кодом и неограниченной функциональностью.
Удобный, современный интерфейс вкупе с высокой скоростью работы делают VS Code идеальным инструментом для разработки программного обеспечения любого формата, в том числе и на языке С++.
В нем есть подсветка синтаксиса языка по умолчанию, автоматическое дополнение кода, а также система IntelliSense, помогающая находить ошибки в коде, взаимодействовать с API и дополнять код элементами из подключенных к проекту файлов.
Все это удобство дополняется функцией компиляции языка с помощью специализированного плагина. Все инструменты, необходимые для разработки, при этом доступны в едином интерфейсе.
Microsoft Visual C++
Тип: IDE
Стоимость: Community-версия распространяется бесплатно
Поддерживаемые платформы: Windows
Это проприетарная программная платформа для разработки с использованием языка С++. Также Visual Studio поддерживает другие часто используемые языки: Node.js, Python, а также С#.
Приложения можно создавать прямо в программе. Для этого есть удобный интерфейс для управления проектами, многооконный текстовый редактор для написания скриптов, встроенный быстрый компилятор, а также удобная система тестирования кода со всеми необходимыми инструментами, включая консоль и прочее.
Тут, как и в VS Code, есть система IntelliSense, помогающая писать код быстрее и эффективнее. Она автоматически дополняет строки кода, проверяет код на наличие ошибок, помогает работать со сторонними API и т.п.
Развиваемая сообществом версия программы распространяется безвозмездно.
Xcode
Тип: IDE
Стоимость: Бесплатно
Поддерживаемые платформы: macOS
Ключевая IDE компании Apple, разработанная эксклюзивно для macOS. Хоть и основное направление Xcode – работа с языками Objective-C и Swift, в программу встроен быстрый и удобный компилятор С++. Для работы с ним нужно лишь указать соотвествующий формат при создании нового проекта.
В Xcode удобный интерфейс, позволяющий легко организовать все открытые файлы проекта: скрипты, документацию, preview-кода и другие элементы, необходимые по ходу разработки приложения.
Здесь есть все необходимые инструменты для разработки: полноценные дебаггер (система поиска ошибок), механизмы управления файлами на манер git, встроенные утилиты для тестирования кода и т.п.
Запускать компилятор можно через командную строку, не используя графический интерфейс.
g++
Тип: Компилятор
Стоимость: Бесплатно
Поддерживаемые платформы: Linux, macOS
Классические компиляторы в духе g++ отличаются от IDE отсутствием среды для разработки. Они лишь переводят текст с языка С++ на машинный язык, понятный для компьютерного процессора.
g++ – это встроенная в unix-системы утилита, запускаемая через командную строку.
Чтобы ею воспользоваться, нужно:
-
Открыть терминал.
-
С помощью команды cd перейти в директорию с исходным кодом программы.
-
Ввести команду g++ название файла в формате .cpp
Эта команда автоматически создаст инициализируемый .exe-файл.
При необходимости скомпилировать код и сразу же его запустить, можно расширить команду и добавить ссылку на созданный инициализируемый файл.
Dev-C++
Тип: IDE
Стоимость: Бесплатно
Поддерживаемые платформы: Windows
Dev-C++ – это полноформатная IDE для написания и компиляции кода на языках С и С++. Утилита является одним из главных программных продуктов с 1998 года. Ее используют миллионы разработчиков, студентов и исследователей.
Из преимуществ Dev-C++ пользователи программы выделяют следующие аспекты:
-
Легковесность и высокая скорость работы (интерфейса и компилятора).
-
Портативность. Возможность запускать Dev-C++ без установки.
-
Поддерживает сторонние компиляторы Mingw, Cygwin и другие.
-
Браузер классов, интегрированный дебаггер, автозавершение кода.
-
Удобный интерфейс управления проектами и настраиваемый текстовый редактор.
Intel C++
Тип: Компилятор
Стоимость: Бесплатно
Поддерживаемые платформы: Windows, Linux
Intel C++ (ICC), как понятно из названия, разработан компанией Intel с использованием современных наработок и мощной интеграцией с аппаратными компонентами компании.
В Intel C++ используется мощная система кэширования и SIMD-инструкции. Это позволяет ему компилировать код гораздо быстрее и эффективнее, чем большинству подобных решений. К тому же он удерживает высокую производительность на протяжении всего времени работы, когда другие компиляторы «проседают».
Intel внедрила колоссальное количество технологий, чтобы при компиляции создавать оптимизированный и быстро инициализируемый код. К тому же их программа легко интегрируется в другие популярные инструменты для разработки и может использоваться в тандеме с любым другим компилятором.
Также платформа Intel поддерживает стандарты C++ 20, SYCL, OpenMP 5.0, GPU offload.
Mingw-w64
Тип: Компилятор
Стоимость: Бесплатно
Поддерживаемые платформы: Windows
Усовершенствованная версия проекта mingw, который завершил свое существование в 2007 году. Mingw-w64 – это форк (ответвление разработки) оригинального компилятора, необходимого для поддержки 64-битных операционных систем.
Также mingw-w64 поддерживает современные версии API, за счет чего и приобрел большую популярность среди независимых разработчиков. Они же регулярно выпускают обновления и совершенствуют компилятор.
Mingw-w64 включает в себя миллионы подзаголовков, включая те, что необходимы для работы с новыми API Windows. В комплекте с mingw-w64 идет все необходимое для запуска и тестирования кода на Windows: инструменты для генерации файлов в формате .def, .dll. и утилита genidl для создания .idi файлов.
Проект mingw-w64 используется во множестве проектов, включая Blender, Fedora, OpenSUSE, DAE Tools, Botan, Win-builds и так далее.
Clang C++
Тип: Компилятор
Стоимость: Бесплатно
Поддержимваемые платформы: macOS, Linux, FreeBSD
Один из наиболее популярных и часто используемых компиляторов С, С++, Objective-C и других языков. Также он подходит для работы с фреймворками OpenMP, OpenCL, RenderScript, CUDA.
Clang создавался в качестве альтернативы GNU Compiler Collection. Продукт поддерживает большую часть флагов компиляции и неофициальных расширений для программного языка. Продукт развивается силами разработчиков огромного числа крупных корпораций, включая Apple, Microsoft, Google, ARM, Sony, Intel, AMD и других. Исходный код открыт.
Clion
Тип: IDE
Стоимость: от 14 100 рублей
Поддерживаемые платформы:
Clion – это полнофункциональная кроссплатформенная среда для разработки приложений на языке C++. В нее включена поддержка современных стандартов программного языка С++, технологий libC++ и Boost.
Программа автоматически контролирует состояние кода и его «чистоту», позволяя разработчикам сконцентрироваться на ключевых аспектах создания приложений вместо забот о поиске ошибок и т.п. Естественно, не обошлось без поддержки автодополнения кода, подсветки синтаксиса и механизмов тестирования.
Clion упрощает процесс разработки программного обеспечения за счет использования CMake и Gradle. Разработка компании JetBrains идеально подходит для комфортного управления всеми аспектами приложения с клавиатуры, тестирования кода с использованием технологий Google Test, интеграции VCS, Git< Boost.Test и других фреймворков.
Лучшие сервисы-компиляторы
Компилировать код можно не на жестком диске своего ПК, а онлайн, используя специализированные сервисы. Компилятор находится на сервере разработчика и выполняет все необходимые функции за вас. Правда, функциональность таких сервисов обычно заметно ограничена. Рассчитывать на полную поддержку всех используемых библиотек не стоит, но для быстрого тестирования кода и изучения языка такие компиляторы подходят идеально.
Codepad
Тип: Компилятор
Стоимость: Бесплатно
Поддерживаемые платформы: Любой браузер
Онлайн-сервис для компиляции и интерпретации C++ через браузер, разработанный независимым разработчиком Стивеном Хэйзелом, одним из основателей компании Sauce Labs.
Одним из преимуществ Codepad является функция коллаборации. Можно создавать проекты с собственными субдоменами для приватной совместной работы с коллегами.
Принцип работы Codepad простой: в текстовое поле сайта нужно вставить сгенерированный ранее код и нажать на кнопку Submit. Утилита в ответ отправит вывод (результат работы) команды. Потом можно оставить комментарий под написанным кодом и сгенерировать постоянную ссылку для взаимодействия с другими программистами.
Также Codepad поддерживает C, Haskell, Lua, Python и другие языки, над которыми можно работать в команде прямо из браузера.
CPP.sh
Тип: Компилятор
Стоимость: Бесплатно
Поддерживаемые платформы: Любой браузер
Еще одна онлайн-альтернатива для тех, кто хочет разрабатывать ПО на языке C++ и кому нужен простой и быстрый компилятор.
Интерфейс CPP.sh состоит из двух ключевых фрагментов: текстовое поле, куда можно прописать код, и панель с настройками. Текстовый редактор сервиса поддерживает подсветку синтаксиса и возможность протестировать практически любой код прямо в браузере, не используя дополнительное ПО.
В настройках можно выбрать стандарт языка (С++98, С++11, С++14), тип уведомлений об ошибках (Wall, Wextra, Wpedantic), уровень оптимизации кода, а также прописать параметры инициализации кода и вывода данных. Также в CPP.sh есть две консоли с информацией о компиляции и запуске кода.
Jdoodle
Тип: Компилятор
Стоимость: Бесплатно
Поддерживаемые платформы: Браузер, iOS и Android
Еще один компилятор С++, работающий в браузере и не требующий установки дополнительного ПО.
В Jdoodle можно инициализировать код в одном из пяти доступных режимов: GCC 5.3.0, Zapcc 5.0.0, GCC 7.2.0, GCC 8.1.0, GCC 9.1.0. Можно вписать свои аргументы для командной строки и ввести параметры Stdin Inputs.
Jdoodle работает в двух режимах: первый – статичный (сначала пишете код, а потом его запускаете), второй – интерактивный (результат любого действия разработчика тут же отображается в консоли).
При необходимости можно не писать код на сайте, а загрузить файл уже с готовым скриптом. Также в Jdoodle можно включить темную тему, выбрать размер шрифта, сохранить проект в отдельном файле и пригласить коллег для совместной работы. А еще у Jdoodle есть мобильная версия для компиляции на смартфонах и планшетах.
C++ Tutor
Тип: Компилятор
Стоимость: Бесплатно
Поддерживаемые платформы: Любой браузер
Последняя в подборке система визуализации кода, часто использующаяся начинающими разработчиками на ранних этапах изучения С++. В отличие от вышеперечисленных компиляторов, здесь все предельно просто: вводите код, затем нажимаете на кнопку «Visualize Execution» и смотрите на результат. Никаких настроек, опций и дополнительных функций тут нет. Максимально примитивный, но все еще эффективный инструмент.
Вместо заключения
На этом все. Каждый из описанных выше компиляторов используется тысячами разработчиков и отлично подходит для разработки на С++. Остается только опробовать их и выбрать наиболее подходящий вариант для вашего уровня, типа задач и рода деятельности.
На чтение 8 мин Просмотров 8.5к.
Обновлено
Компилятор – это по сути утилита, которая занимается переводом человеческой логики языка программирования в понятный машине набор инструкций. За несколько десятилетий была построена армия компиляторов даже для узкой группы однокоренных языков C и C++. Какой компилятор C выбрать в третьем десятилетии XXI века?
Содержание
- Что такое компилятор
- IDE и компилятор: различия
- Как выбрать нужное решение
- Топ 7 лучших компиляторов для C/C++
- Visual Studio Code
- Dev-C++
- Microsoft Visual C++ Community Version
- Intel C++
- AMD x86 Open64 Compiler Suite
- C++ Compiler Explorer
- Wandbox
- Вывод
Что такое компилятор
Компилятор – это переводчик, программа которая преобразует другие программы в машинный код. Этот процесс так и называется – компиляция кода.
Процессор состоит из триллионов транзисторов. Как не парадоксально, чтобы управлять этими атомами логики компьютера хватает двух чисел: 0 и 1. От последовательности бинарного потока и зависит, что за последовательность операций будет выполнять CPU.
Человеку сложно сразу готовить набор команд в формате бесконечной комбинации нолей и единиц. Намного проще свести алгоритм к последовательности команд языка программирования, а рутинное преобразование по примитивным правилам поручить компилятору.
IDE и компилятор: различия
Компилятор – это отдельная утилита. Не так давно программисты и код набирали в стандартном текстовом редакторе. Но вскоре стало ясно: лучше объединить средства и инструменты в один продукт. Так появилось понятие среды разработки – IDE или, другими словами, комплексного набора:
- специального текстового редактора с подсветкой символов, проверкой синтаксиса и автодополнением кода;
- встроенного файлового менеджера;
- компилятора;
- средств автоматизации сборки и отладчика;
- дополнительных полезных инструментов, например, для интеграции с системами управления версиями.
✅Читайте здесь Кто такой Python разработчик, чем занимается, какой доход
Как выбрать нужное решение
Какой компилятор для кода на C и C++ подойдет, зависит от сценария применения. Помимо отдельного решения и среды разработки есть также онлайн-компиляторы. Такое разнообразие оправдано.
Изолированная утилита отличается от IDE тем, что не вынуждает пользоваться сопутствующими модулями. Пользователь волен, например, выбрать для себя текстовой редактор или отладчик. Полная свобода без ограничений: можно задействовать любые варианты, предлагаемые рынком программного обеспечения. Однако большие проекты сложно вести, вооружившись разнородным софтом.
Эту задачу решает IDE. Интегрированная среда разработки, предлагает уже готовый набор инструментов, о совместимости и согласованной работе которых заранее позаботился разработчик. Такие системы универсальны, но каждая конкретная, тем не менее, тяготеет к некоторой области применения.
Есть продукты простотой интерфейса и эксплуатации, больше подходящие начинающим, другие – насыщены множеством полезных функций, третьи – включают дополнительные библиотеки шаблонов, четвертые – помогают запустить эмуляцию процессора, поддерживающего вычисления с плавающей запятой и так далее.
Наконец, онлайн-компиляторы годятся для создания не слишком сложных программ и отличаются кроссплатформенностью. Легко открыть веб браузер и зайти на страницу сервиса.
Такие веб-ориентированные решения легко использовать в командной работе. Можно создавать проект одновременно нескольким программистам, подключаясь к конкретной рабочей площадке удаленно.
Таким образом, выбирать компилятор стоит, отталкиваясь от специфики задач и формата работы.
✅ТОП 30 Бесплатных Курсов Python здесь
Топ 7 лучших компиляторов для C/C++
За время существования и развития этих языков программирования появилось немало связанных продуктов: от текстовых редакторов с подсветкой кода и быстрых компиляторов, до интегрированных сред разработки с невероятными возможностями. Выбрать лучшие компиляторы C и C++ из такого разнообразия крайне сложно. Ниже представлены самые успешные бесплатные проекты. Эти продукты поддерживают одновременно более одной платформы, используются миллионами программистов и продолжают развиваться усилиями крупнейших комьюнити.
Visual Studio Code
VS Code изначально текстовой редактор кода, доступный для операционных систем Windows, macOS и Linux. Компилятор устанавливается как плагин. Таким же образом можно интегрировать и другие функции, превратив приложение в полноценную IDE.
Базовые достоинства:
- проект с открытым исходным кодом;
- разнообразие плагинов – это гибкость адаптации среды под любые задачи;
- компилятор отличается высокой производительностью;
- решение обладает удобным и приятным интерфейсом.
Дополнительные опции: подсветка синтаксиса и автодополнение кода. Самый же практичный бонус – система IntelliSense, которая облегчает поиск и устранение ошибок, обеспечивает связь с API и помогает обогащать код объектами из файлов, не связанных с проектом напрямую.
VS Code – выдающийся инструмент, аккумулирующий все разнообразие современных технологий программирования в одном продукте.
✅Читайте здесь Рейтинг Языков программирования
Dev-C++
Наверное, самая распространенная IDE для разработчиков на языках C и C++.
Используется в индустрии с 1998 года и остается востребованной до сих пор. Специалисты и начинающие особенно ценят эту среду за ряд уникальных свойств:
- небольшие размеры дистрибутива;
- умение работать в портативном режиме;
- возможность запуска сторонних компиляторов, например, Cygwin или Mingw;
- гибко настраиваемый текстовой редактор;
- эргономичный интерфейс управления проектами.
Единственный ощутимый недостаток – IDE поддерживает только операционные системы Microsoft. Однако и это ограничение можно обойти, если использовать эмуляторы.
Это интегрированная среда обработки выделяется поддержкой самых актуальных языков программирования: содержит компиляторы C# (си шарп), а также Python и Node.js.
К услугам пользователя:
- текстовой редактор, в котором реализован принцип многооконности;
- мощный компилятор;
- система тестирования и множество других функций.
Для поиска ошибок, автодополнения и других повышающих эффективность работы возможностей применяется IntelliSense.
Программа не просто популярна, но поддерживается гигантским комьюнити. Значит решать любые вопросы по эксплуатации и получить поддержку на этой платформе проще, чем на других.
Intel C++
Этот компилятор будет интересен тем, в чьих компьютерах работают процессоры одноименной корпорации.
Продукт оптимизирован под аппаратные решения Intel. Благодаря использованию SIMD-инструкций и всеобъемлющей системы кэширования утилита компилирует с увеличенной скоростью на родной платформе. При этом производительность сохраняется даже в точках, которые вызывают проседание в работе конкурирующих решений.
AMD x86 Open64 Compiler Suite
Этот компилятор C/C++ демонстрирует рекордную результативность на процессорах AMD и предлагает расширенные возможности по исправлению ошибок.
Продукт поддерживает межъязыковые вызовы, работая и с Fortran. Приложение имеет версии дистрибутива для всех самых популярных операционных систем.
C++ Compiler Explorer
Это не программа, а сервис компилятор. Плюс в том, что устанавливать приложение не нужно. Достаточно открыть браузер и проверить как конкретный код собирается и работает. Доступны разные версии компилирования, например, MIPS GCC, GCC-5, Clang и другие. Допускается одновременно запускать более одного компилятора и использовать два и более источников. Это сильно помогает при оптимизации сборки.
Кроме того, сервис ищет ошибки, позволяет выбрать формат отображения кода и сопоставить интересующие участки исходника с соответствующими местами в полученном ассемблере.
Пользоваться Compiler Explorer не трудно, а производительность поражает. Компиляция идет сразу при наборе – это мгновенная обратная связь.
Продукт больше напоминает IDE и выглядит ярко на фоне других онлайн-решений. Подкупает также поддержка многих других языков программирования.
Wandbox
Еще один онлайн-сервис с букетом полезных опций и полной совместимостью с новейшей версией C++17. Поддерживается многофайловость, настраиваются привязки клавиш редактора, предусмотрена поддержка версий: Clang, GCC, ZAPCC и других.
Отдельное преимущество – подключение дополнительных библиотек кроме стандартной: Boost, MassagePack, Sprout и других.
Программы, после компиляции запускаются в песочнице, которая также предлагает ввод и вывод файлов.
Сервис адекватен для быстрой компиляции кода и будет полезен как тестовая площадка.
Хотя текстовый редактор не подсвечивает синтаксис и не ищет ошибки, Wandbox подкупает простотой. Чтобы выполнять работу используя сервис даже не нужна регистрация.
Вывод
Нельзя не сказать и о поддержке других языков. Это и популярные Java, Python, Ruby, Perl, Swift, и нишевые Pascal, Lisp и другие.
На этом можно поставить точку. Описанные компиляторы и IDE – выбор миллионов программистов и студентов создающих код на C и C++. Чтобы подобрать тот самый продукт и пользоваться бесплатно не лишним будет попробовать каждый.
Практика – лучший способ найти оптимальное решение для конкретных задач. Список лучших компиляторов намного шире. Доступна масса других решений: платных или предназначенных только для одной платформы. Здесь приведены самые известные и универсальные.
Microsoft Visual C++ Community Version
1
AMD x86 Open64 Compiler Suite
0
Время на прочтение
14 мин
Количество просмотров 69K
Задавшись этим вопросом я, в первую очередь, сформулировал требования: жесткие и опциональные (но желательные) для системы сборки и графической среды разработки.
Сразу хочу отметить что речь идет о написании C++ кода не под какую-то специфичную платформу типа Android или фреймворка, например Qt, — где все уже готово, как с построением так и с редактированием кода, а об generic коде не привязанному к конкретной платформе или фреймворку.
Общие:
- Свободный.
- Кросплатформенный (по крайней мере Windows и Linux).
Система сборки:
- Единая команда для сборки на разных платформах.
- Инкрементальная сборка с корректным учетом всех зависимостей: заголовочных файлов и сторонних компонентов, использующихся для сборки.
- Сборочный скрипт должен содержать только необходимый минимум конфигурации специфичный для конкретного проекта. Общая логика билда не должна кочевать из скрипта в скрипт, а находится в билд системе или ее плагинах.
- Встроенная параллельная сборка.
- Поддержка различных тулчейнов (хотя бы gcc, Visual C++, CLang).
- Возможность смены тулчейна с минимальными затратами, без переписывания всего билд скрипта.
- Легко переключаемые варианты построения: Debug и Release.
- Совершенно нежелательны зависимости на какие-то дополнительные низкоуровневые тулзы типа make. Одним словом система сборки должна быть самодостаточной.
- Очень желательна интеграция системы сборки с репозиториями сторонних компонентов типа pkg-config или как Maven Central для JVM.
- Система сборки должна быть расширяемой плагинами, т.к. процедура сборки для каждого конкретного проекта может оказаться сложнее типовой концепции построения (генерация кода, например, или сборка некоего нестандартного образа).
- Удобно, когда сценарий сборки представляет собой какой-то высокоуровневый язык программирования или еще лучше DSL. Это позволит не особо затратно и выразительно менять поведение построения прямо в скрипте.
- При настройке компилятора и линковщика из сценария сборки весьма удобно когда билд системой предоставляются хотя бы базовые абстракции: например, хочется добавить макрос — зачем думать какой параметр командной строки компилятора отвечает за это? /D на MSVC или -D на gcc — пусть система сборки разрулит эти несущественные детали сама.
- Хорошая интеграция с графическими средами разработки (IDE).
IDE:
- Способность IDE корректно «понимать» C++ код. IDE должна уметь индексировать все файлы проекта, а также все сторонние и системные заголовочные файлы и определения (defines, macro).
- IDE должна предоставлять возможность кастомизации команд для построения проекта, а так же где искать заголовочные файлы и определения.
- Должна эффективно помогать в наборе кода, т.е. предлагать наиболее подходящие варианты завершения, предупреждать об ошибках синтаксиса и т.д.
- Навигация по большому проекту должна быть удобной, а нахождение использования быстрым и простым.
- Предоставлять широкие возможности для рефакторинга: переименование и т.д.
- Также необходима способность к генерации шаблонного кода — создание каркаса нового класса, заголовочного файла и файла с реализацией. Генерация геттеров/сеттеров, определения методов, перегрузка виртуальных методов, шаблоны реализации чисто виртуальных классов (интерфейсов) и т.д.
- Подсветка и поддержка тегов документирования кода, таких, как Doxygen.
В свете этих «хотелок» мной были рассмотрены несколько систем сборки и графических сред разработки. Этот небольшой обзор ни в коей мере не претендует на полноту и содержит мои субъективные оценки, но, возможно, кому-то это покажется полезным в качестве начальной ступени.
Make — [античность] мастодонт и заслуженный ветеран систем сборки, которого все никак не хотят отпустить на пенсию, а заставляют везти на себе все новые и новые проекты. Это очень низкоуровневая тулза со своим специфичном языком, где за пробел вместо таба вам сразу же грозит расстрел на месте. С помощью make можно сделать все, что угодно — билд любой сложности, но за это придется заплатить усилиями для написания скрипта, а также его поддержки в актуальном состоянии. Переносить логику билда из проекта в проект также будет накладно. Существуют некие современные «заменители» make-а: типа ninja и jam, но сути они не меняют — это очень низкоуровневые инструменты. Так же, как и на ассемблере можно написать все что угодно, только стоит ли?
CMake — [средневековье] первая попытка уйти от низкоуровневых деталей make-а. Но, к сожалению, далеко уйти не удалось — движком здесь служит все тот же make для которого CMake генерирует огромные make-файлы на основе другого текстового файла с более выскоуровневым описанием билда. По схожему принципу работает и qmake. Такой подход напоминает мне красивый фасад старого деревянного дома, который заботливо обшили свежим пластиком. CMake стабильная и хорошо зарекомендовавшая себя система, есть даже встроенная интеграция с Eclipse, но, к сожалению, мне не подошла потому что противоречит части требований изложенных в начале статьи. Под Linux все вроде бы хорошо, но если нужно построить тот же проект под Windows с помощью MSVC — а я предпочитаю нативный компилятор MinGW-шному, будут сгенерированы файлы для NMake. Т.е. зависимости на еще одну тулзу и разные команды на сборку для другой платформы. И все это следствия чуток кривоватой архитектуры, когда основная часть работы выполняется другими «помощниками».
Ant — [эпоха возрождения] своеобразный клон make для Java. Скажу честно, я потратил совсем немного времени для проверки Ant (а так же Maven) в качестве билд системы для C++. И у меня сразу же появилось ощущение что поддержка С++ здесь чисто «для галочки» и недостаточно развита. К тому же даже в Java проектах Ant уже используется достаточно редко. В качестве языка сценария (так же как и для Maven) здесь выбран XML — этот гнусный птичий язык :). Этот факт оптимизма мне совсем не прибавил для дальнейшего погружения в тему.
SCons — [новые времена] самодостаточная, кросплатформенная билд система, написанная на Python. SCons одинаково хорошо справляется как с Java так и с C++ билдами. Зависимости хидеров для инкрементальной сборки отрабатываются корректно (насколько я понял создается некая база данных с метаданными билда), а на Windows «без бубна» работает MSVC. Язык сценария сборки — Python. Весьма достойная система, и я даже хотел закончить свои изыскания на ней, но как известно, нет пределу совершенства, и при более детальном осмотре выявились некоторые минусы в свете вышеизложенных требований.
Нет никаких абстрактных настроек для компилятора, поэтому если, например, возникнет необходимость сменить тулчейн, возможно, понадобиться искать места в билд скрипте для внесения изменений. Те же макросы придется прописывать с вложенными условиями — если это Виндовс то сделай так, если это GCC сделай так и т.д.
Нет поддержки удаленных артефакториев и высокоуровневой зависимости одного билда на другой.
Общая архитектура построена так, что так называемые user defined builders существуют практически изолированно и нет возможности заиспользовать уже существующую логику билда, чтобы дополнить ее своей через несложный плагин. Но в целом это достойный выбор для небольших проектов.
Gradle [современность] — у меня уже был позитивный опыт использования Gradle для Java и Kotlin проектов и я возлагал на него большие надежды.
Для JVM языков в Gradle очень удобная концепция работы с библиотеками, необходимыми для построения проекта (билд зависимостями):
- В скрипте прописываются адреса репозиториев с артефактами: maven или ivy — например. Так же это может быть репозиторий любого другого типа/формата — лишь бы был плагин для него. Это может быть удаленный репозиторий, какой-нибудь Maven Central или ваш личный хостинг где-нибудь в сети или просто локальная репа на файловой системе.
- Так же в специальном разделе скрипта указываются непосредственно зависимости для построения — список необходимых бинарных артефактов с указанием версий.
- Перед началом построения Gradle пытается зарезолвить все зависимости и ищет артефакты с заданными версиями по всем репозиториям. Бинарники загружаются в кэш и автоматически добавляются в билд. Это очень удобно и я надеялся, что для C++, возможно, сделали нечто подобное.
Сначала я заценил «старый» плагин для поддержки C++ — `cpp` — и был разочарован — структура скрипта не интуитивная: model, component, nativespec — и какая-то мешанина из различных типов бинарей: и выполнимые и библиотеки все в одном скрипте. Непонятно где размещать юнит тесты. Такая структура сильно отличалась от того что я использовал для Java.
Но, оказалось, что есть и «новые» плагины для поддержки C++: `cpp-application` — для приложений, `cpp-library` для библиотек: статических и динамических и наконец `cpp-unit-test` для юнит тестирования. И это было то что я искал!
Структура папок проекта по умолчанию похожа на проект для Java:
- src/main/cpp — корневая папка для основных файлов *.cpp проекта.
- src/main/headers — папка для внутренних заголовочных файлов.
- src/main/public — папка для экспортируемых заголовков — для библиотек.
- src/test/cpp — папка для файлов *.cpp юнит теста.
Такая структура не жесткая — ее всегда можно поменять в скрипте, но все же не стоит этого делать без особой необходимости, она вполне разумна.
Кстати, билд скрипт — обычно build.gradle, это DSL языка Groovy или Kotlin (build.gradle.kts) на выбор. Внутри скрипта всегда доступен Gradle API и API добавленных в скрипт плагинов.
Для библиотек можно выбрать тип: статическая или динамическая (или собрать оба варианта).
По умолчанию сконфигурированы два варианта построения: Debug (gradle assemble) и Release (gradle assembleRelease).
Принцип запуска юнит тестирования такой же как в Java: gradle test выполнит постройку основного компонента, потом тестов, если они есть в папке src/test/cpp, а затем выполнит тестовое приложение.
Пресловутые дефайны можно задавать абстрактно — Gradle сам сгенерирует необходимые параметры компилятора. Есть еще несколько абстрактных настроек типа оптимизации, отладочной информации и т.д.
Из коробки поддерживаются GCC, Microsoft Visual C++, CLang.
Система плагинов очень развита, а архитектура расширений устроена удобно — можно взять готовую логику и задекорировать/расширить ее. Плагины бывают двух видов: динамические, которые пишутся прямо на Groovy и встраиваются в скрипт или написанные на Java (или на другом языке с JVM) и скомпилированные в бинарные артефакты. Для плагинов существует бесплатный Gradle-артифакторий, в котором любой желающий может разместить свой плагин, который будет доступен всем. Что успешно и проделал автор этой статьи но об этом чуть позже.
Хотелось бы подробнее остановиться теперь на системе работы с бинарными компонентами в Gradle для C++: она почти такая же как в Java! Билд зависимости работают практически так же как я описал выше.
Возьмем для примера композитный билд:
- utils — папка с библиотекой
- app — папка с приложением, которое использует utils.
- settings.gradle — Gradle файл для объединения этих двух компонент в композитный билд.
В файле build.gradle из папки app достаточно прописать такую зависимость:
dependencies {
implementation project(':utils')
}
А все остальное проделает Gradle! Добавит в компилятор путь для поиска заголовочных файлов utils и прилинкует бинарь библиотеки.
И все это одинаково хорошо сработает как под Linux GCC, так и под Windows MSVC.
Инкрементальная сборка, естественно, тоже замечательно работает и при изменении хидеров в utils будет перестроен app.
Как оказалось, в Gradle пошли дальше и реализовали возможность выкладывать C++ артефакты в Maven Repository! Для этого используется стандартный `maven-publish` плагин.
В скрипте необходимо указать репозиторий куда вы хотите выложить свой артефакт и сделать gradle publish (или gradle publishToMavenLocal для локальной публикации). Gradle сбилдит проект и
выложит в специальном формате — с учетом версии, платформы, архитектуры и варианта билда.
Выкладываются сами бинарные файлы библиотек и публичные заголовочные файлы — из папки src/main/public.
Понятно что выложить С++ артефакт на Maven Cental нельзя — он не пройдет обязательные проверки системы. Но поднять Maven репозиторий в сети совсем нетрудно, а для локального репозитория вообще ничего делать не нужно — это просто папка на диске.
Теперь если вы хотите использовать в своем проекте чью-то библиотеку вы можете написать в билд скрипте что-то вроде:
repositories {
maven {
url = 'https://akornilov.bitbucket.io/maven'
}
}
unitTest {
dependencies {
implementation 'org.bitbucket.akornilov.tools:gtest:1.8.1'
}
}
Здесь говориться что для юнит тестирования нужно использовать артефакт gtest версии 1.8.1 из Maven репозитория.
Это, кстати, вполне реальный репозиторий в котором выложен мой билд Google Test v1.8.1, простроенный с помощью Gradle для Windows и Linux x86_64.
Естественно, что всю низкоуровневую работу по конфигурированию компилятора и линковщика для работы с внешним компонентом Gradle берет на себя. Вам достаточно заявить о своих намерениях использовать такую-то библиотеку с такой-то версией из такого-то репозитория.
Для интеграции с IDE в Gradle есть два встроенных плагина для Visual Studio и XCode. Они хорошо работают, за исключением того что Visual Studio плагин игнорирует код юнит тестов из папки src/test/cpp и генерирует проект только для основного кода.
Теперь пришло время поговорить об IDE и о том как подружить их с Gradle
Eclipse CDT (2018-12R) — зрелый и качественный продукт. Если ему удалось успешно пропарсить Ваш проект, значит Вам повезло — редактировать будет комфортно. Скорее всего он даже «поймет» самые замороченные типы auto. Но если нет… Тогда он будет яростно подчеркивать красным пунктиром все подряд и ругаться нехорошими словами. Например, он не переваривает стандартные заголовочные файлы MSVC и Windows SDK. Даже вполне безобидный printf подчеркивается красным пунктиром и не воспринимается как нечто осмысленное. Там же оказался и std::string. Под Linux с родным ему gcc все замечательно. Но даже при попытке заставить его индексировать проект из родственного Android Native начались проблемы. В заголовках bionic он в упор отказывался видеть определение size_t, а заодно и всех функций которые его использовали. Наверное, под Windows можно исправить ситуацию если вместо заголовочных файлов Microsoft подсунуть ему, например, Cygwin или MinGW SDK, но мне такие фокусы не очень интересны, мне бы все же хотелось чтобы софт такого уровня «кушал то что дают», а не только то что он «любит».
Возможности по навигации, рефакторингу и генерации шаблонного кода замечательные, но вот к помощнику при наборе букв есть вопросы: допустим набираем несколько символов из какого-то длиннющего имени, почему бы не предложить варианты завершения? Нет, помощник терпеливо дожидается пока пользователь доберется до. или -> или ::. Приходится постоянно нажимать Ctrl + Space — раздражает. В Java эту досадную недоделку можно было исправить выбрав в качестве триггера весь алфавит в CDT же я не нашел простого решения.
NetBeans 8.1/10.0 — доводилось пользоваться этим IDE для Java, запомнился как неплохой и легковесный софт со всем необходимым функционалом. Для C++ у него есть плагин разработанный не сообществом, а непосредственно NetBeans. Для C++ проектов существует довольная жесткая зависимость на make и gcc. Редактор кода неторопливый. В генераторе шаблонного кода не нашел очень простую вещь: добавляем новый метод в заголовочном файле класса — нужно сгенерировать тело метода в cpp файле — не умеет. Степень «понимания» кода средняя, вроде бы что-то парсит, а что-то нет. Например, итерирование по мапе с автоитератором для него уже сложновато. На макросы из Google Test ругается. Закастомизировать билд команды проблематично — на Linux при доступном gcc и make (это при том что используется уже другая билд система) сработает, на Windows потребует MinGW, но даже при его наличии откажется построить. В целом работа в NetBeans с C++ возможна, но комфортной я бы ее не назвал, наверное, надо очень любить эту среду, чтобы не замечать разные ее болячки.
KDevelop 5.3.1 — когда-то задумывался как инструмент разработчика для KDE (Linux), но сейчас есть версия и под Windows. Имеет быстрый и приятный редактор кода с красивой подсветкой синтаксиса (основан на Kate). Закостомизировать левую билд систему не получится — для него основная система сборки CMake. Толерантно относится к MSVC и Windows SDK заголовкам, во всяком случае printf и std::string точно не приводят его в ступор как Eclipse CDT. Очень шустрый помощник по написанию кода — хорошие варианты завершения предлагает почти сразу во время набора текста. Имеет интересную возможность по генерации шаблонного кода: можно написать свой шаблон и выложить его онлайн. При создании по шаблону можно подключиться к базе данных готовых шаблонов и загрузить понравившийся. Единственное что расстроило: встроенный шаблон по созданию нового класса криво работает как под Windows так и под Linux. Wizard-а по созданию класса имеет несколько окон, в которым можно много чего настроить: какие конструкторы нужны, какие члены класса и т.д. Но на финальной стадии под Windows выскакивает какая-то ошибка успеть разглядеть текст которой невозможно и создаются два файла h и cpp размером 1 байт. В Linux почему-то нельзя выбрать конструкторы — вкладка пустая, а на выходе корректно генерится только заголовочный файл. В общем-то, детские болезни для такого зрелого продукта смотрятся как-то несерьезно.
QtCreator 4.8.1 (open source edition) — наверное, услышав это название, Вы недоумеваете, как сюда затесался этот монстр заточенный под Qt с дистрибутивом в гигабайт с гаком. Но речь идет о «легкой» версии среды для generic проектов. Его дистрибутив весит всего около 150 Мб и не тащит с собой вещи специфичные для Qt: download.qt.io/official_releases/qtcreator/4.8.
Собственно, он умеет делать почти все, о чем я написал в своих требованиях, быстро и корректно. Он парсит стандартные заголовки как Windows так и Linux, кастомизируется под любую билд систему, подсказывает варианты завершения, удобно генерит новый классы, тела методов, позволяет выполнять рефакторинг и навигацию по коду. Если хочется просто комфортно работать, не думая постоянно о том, как побороть ту или иную проблему есть смысл присмотреться к QtCreator-у.
Собственно, осталось рассказать о том, чего мне не хватило в Gradle для полноценной работы: интеграция с IDE. Чтобы билд система сама сгенерировала бы проектные файлы для IDE, в которых уже были бы прописаны команды для построения проекта, перечислены все исходные файлы, необходимы пути для поиска заголовочных файлов и определения.
Для этой цели мной был написан плагин для Gradle `cpp-ide-generator` и опубликован на Gradle Plugin Portal.
Плагин может использоваться только совместно с `cpp-application`, `cpp-library` и `cpp-unit-test`.
Вот пример его использования в build.gradle:
plugins {
id ‘cpp-library’
id ‘maven-publish’
id ‘cpp-unit-test’
id ‘org.bitbucket.akornilov.cpp-ide-generator’ version ‘0.3’
}
library {
// Library specific parameters
}
// Configuration block of plugin:
ide {
autoGenerate = false
eclipse = true
qtCreator = true
netBeans = true
kdevelop = true
}
Плагин поддерживает интеграцию со всеми вышеперечисленными графическими средами разработки, но в конфигурационном блоке плагина — ide можно отключить поддержку ненужных IDE:
kdevelop = false
Если параметр autoGenerate выставлен в true, проектные файлы для всех разрешенных IDE будут автоматически генерироваться прямо во время билда. Также в режиме автоматической генерации проектные файлы будут удаляться при очистке билда: gradle clean.
Поддерживается инкрементальная генерация, т.е. обновляться будут только те файлы, которые требуют реального обновления.
Вот список целей, которые добавляет плагин:
- generateIde — сгенерировать проектные файлы для всех разрешенных IDE.
- cleanIde — удалить проектные файлы для всех разрешенных IDE.
- generateIde[имя] — сгенерировать проектные файлы для IDE с заданным именем (IDE должно быть разрешено), например generateIdeQtCreator.
- Доступные имена: Eclipse, NetBeans, QtCreator, KDevelop.
- cleanIde[имя] — удалить проектные файлы для IDE с заданным именем, например cleanIdeQtCreator.
Во время генерации плагин «обнюхивает» билд и извлекает из него всю необходимую информацию для создания проектных файлов. После открытия проекта в IDE должны быть видны все исходные файлы, прописаны пути ко всем хидерам, а так же настроены базовые билд комманды — построить/очистить.
Второй плагин, который мне пришлось сделать, называется `cpp-build-tuner` и он также работает в паре с cpp-application`, `cpp-library` и `cpp-unit-test`.
У плагина нет никаких настроек, его достаточно просто зааплаить:
plugins {
id ‘cpp-library’
id ‘maven-publish’
id ‘cpp-unit-test’
id ‘org.bitbucket.akornilov.cpp-build-tuner’ version ‘0.5’
}
Плагин выполняет небольшие манипуляции с настройками тулчейнов (компилятора и линковщика) для разных вариантов билда — Debug и Release. Поддерживаются MSVC, gcc, CLang.
Особенно это актуально для MSVC, потому что по умолчанию в результате релизного билда Вы получите «жирный», не эстетичный бинарь с дебажной информацией и статически прилинкованной стандартной библиотекой. Часть настроек для MSVC я «подсмотрел» в самой Visual Studio, которые по дефолту он добавляет в свои C++ проекты. Как для gcc/CLang так и для MSVC в профиле Release включаются link time optmizations.
Заметка: Плагины проверялись с последней версией Gradle v5.2.1 и не тестировались на совместимость с предыдущими версиями.
Исходные коды плагинов, а так же простенькие примеры использования Gradle для библиотек: статических и динамических, а так же приложения, которое их использует можно посмотреть: bitbucket.org/akornilov/tools дальше gradle/cpp.
Так же в примерах показано, как пользоваться Google Test для юнит тестирования библиотек.
Maven Repository с простроенной в Gradle Google Test v1.8.1 (без mock).
UPD:
Версии QtCreator под Windows старше 4.6.2 (и по крайней мере, на момент написания этих строк, до 4.10 включительно) «разучились» понимать SDK MSVC. Все из пространства std:: подчеркивают красным и отказываются индексировать. Поэтому, на данный момент, версия 4.6.2 наиболее подходящая для работы под Windows.
Была выпущена новая версия плагина cpp-build-tuner
v1.0 (и cpp-ide-generator
v0.5 – небольшие улучшения).
1) В cpp-build-tuner
добавлен блок конфигурации.
buildTuner {
lto = false
gtest = '1.8.1'
libraries {
common = ['cutils.lib']
windows = ['ole32', 'user32']
linux = ['pthread', 'z']
}
libDirs.common = ['../build/debug', '../release']
}
lto (булевое значение) –разрешает или запрещает LTO для релизного билда. По умолчанию включено.
gtest (строка) – добавлет поддержку Google Test для юнит тестов. На данный момент поддерживается только версия 1.8.1 для GCC, MinGW-W64, и MSVC.
libraries (контейнер) – список библиотек для линковки. Внутри контейнера есть три поля (список строк): common
– библиотеки для любой платформы, windows
– только для Windows и linux
– только для Linux.
libDirs (контейнер) – список папок для поиска библиотек линковщиком. Структура контейнера такая же как и у списка библиотек.
2) Добавлена возможность запуска приложения для cpp-application
. Плагин добавляет в проект дополнительные задачи для этого: run
, runDebug
(тоже самое, что и run
) и runRelease
. Задачи зависят от assemble
, assembleDebug
и assembleRelease
соответственно.
Аналогично стандартному плагину “Java Application plugin” можно передавать параметры командной строки при запуске: gradle run --args="arg1 arg2 ..."
.
UPD
В связи со сменой хостинга плагинов, была изменена группа:
plugins {
id 'loggersoft.cpp-build-tuner' version '1.1'
id 'loggersoft.cpp-ide-generator' version '0.5'
}
Новый адрес проекта: gradle-cpp.sourceforge.io
Документация:
sourceforge.net/p/gradle-cpp/wiki/cpp-build-tuner
sourceforge.net/p/gradle-cpp/wiki/cpp-ide-generator
C is a general-purpose programming language that is extremely popular, simple, and flexible. It allows you to develop firmware and portable applications. C language combines the features of Low level as well as High-level Language.
There are numerous IDEs that offer smart code completion and validate errors in real time. These tools have a syntax checker and debugger for quickly editing C programming code.
Following is a handpicked list of Top C IDE, with their popular features and website links. The list contains both open source (free) and commercial (paid) software.
Best IDE (Compiler) for C Programming Language
#1) Dreamweaver
Dreamweaver is a popular C Development Tool. This tool helps you to create, publish, and manage websites. A website created with DreamWeaver can be uploaded to any web server.
#1 Top Pick
Dreamweaver
5.0
Integrations: Fireworks and Flash
Browser Extensions: Chrome, Firefox, Internet Explorer, Safari
Supported Platform: Windows, Android and iOS
Free Trial: 7 Days Free Trial
Visit Dreamweaver
Features:
- Dynamic websites can be quickly developed using Dreamweaver.
- You can create a website that fits any screen size.
- This tool helps you to customize workspace the way you like.
- It has an inbuilt HTML validator to validate your code.
- Provides Real-time collaboration, Live Preview, Drag-and-drop Editor, Multilingual, Syntax Highlighting, and Dual View
- Supports compliance standard such as GDPR
- Provides numerous plugins like Code View
- Seamlessly integrates with Fireworks and Flash
- Offers ready-made templates for blogs, ecommerce, newsletters and portfolios
- Provides programming languages like HTML, CSS, and JavaScript
- Offers flexible coding, Seamless Live View editing, Multi-monitor, and Redesigned
- It provides customer support via Phone and Chat
- Supported Platforms: Windows, Android and iOS
- Price: Plans start at $20.99 a month.
- Free Trial: 7 Days Free Trial
Visit Dreamweaver >>
7 Days Free Trial
#2) Code:: Blocks
Codeblocks is open-source IDE for writing programs in C. It supports GCC (GNU Compiler Collection). This app allows you to write full breakpoint conditions.
Features:
- It provides workspace to easily combine more than one project.
- You can quickly switch between multiple programs.
- Codeblocks has a feature that automatically completes the code.
- You can build more than one project simultaneously.
- This C IDE for Mac provides a tabbed interface.
- You can use this app on Windows, Linux, and macOS.
Link: http://codeblocks.org/
#3) Eclipse
Eclipse framework is a website development tool for C programming. It is one of the best C IDE that highlights the syntax you have written. This tool enables you to easily debug the program. The app can automatically complete the code.
Features:
- It provides you readymade code template.
- This tool automatically validates syntax.
- It supports code refactoring. (A process of improving internal code structure).
- Eclipse enables you to manage the project remotely.
- It is a cross-platform IDE.
Link: https://www.eclipse.org/downloads/packages/release/kepler/sr2/eclipse-ide-cc-developers
#4) CLion
CLion is a tool developed by Jetbrains. It helps you to quickly solve errors in the program. This IDE enables you to analyze the performance of your application with no hassle.
Features:
- Programmers can effortlessly run and debug programs.
- It helps you to test individual units of source code.
- This software helps you to manage your project and code effectively.
- CLion enables the developer to customize the editor.
- It automatically set formatting while you write code.
- Supported platforms are Linux, Mac, and Windows.
Link: https://www.jetbrains.com/clion/
#5) Visual Studio Code
Visual Studio Code is open-source code editor developed by Microsoft. It is one of the best C IDE for Mac which provides smart code completion based on variable types, essential modules, and function definitions. The tool enables you to control multiple versions of one program with ease.
Features:
- This IDE can work with the Git version control system.
- You can debug code easily.
- It supports numerous extensions for including new languages, themes, and more.
- Visual Studio Code can be used on Windows as well as Mac operating systems.
Link: https://code.visualstudio.com/
#6) NetBeans
NetBeans is an integrated development environment for writing C programs. It has a project window that shows a list of projects currently exists. The tool can automatically complete the brackets.
Features:
- It can highlight code syntax.
- This C Editor application is integrated with the GNU debugger.
- NetBeans supports varieties of compilers.
- You can set exceptions, variable, function breakpoints, etc. and view them in the Breakpoints window.
- It automatically adjusts indent and format the code.
- This tool highlights variables and keywords in your C program.
- Netbeans IDE offers readymade templates for writing C code.
- Platforms are OS X, Windows, Solaris, and Linux.
Link: https://netbeans.org/features/cpp/
#7) Codelite
CodeLite is an open-source tool for writing programs in C. It enables you to restructure your existing C code. This Integrated development environment can highlight the syntax you have written. You can use this application for free.
Features:
- Codelite can be integrated with cscope integration (text-based interface to search a code).
- You can customize syntax colors.
- This tool helps you to find files effortlessly using a tree view.
- The supported platform is OSX, Linux, and Windows.
Link: https://codelite.org/
#8) PlatformIO
PlatformIO is a software for a writing program in C language. It offers smart code completion for professional application development.
Features:
- It supports dark and light color themes.
- It offers advanced search facility for keywords, known or missed headers, etc.
- PlatformIO tool supports more than 200 embedded boards.
- This IDE can be used on Windows, Linux, and Mac.
Link: https://platformio.org/platformio-ide
#9) Sublime Text
Sublime is an IDE used for developing a project using C language. This tool enables you to jump to symbol, word, or line using a keyboard shortcut. It is one of the best IDE for C Programming that offers a command palette for changing the syntax.
Features:
- Sublime text provides API to extend the features.
- It highlights the syntax.
- You can quickly go to the definition of class or method.
- Supports shortcuts for ease of access.
- Sublime Text provides a command palette to hold frequently utilized functionality.
- It is available for Mac, Linux, and Windows.
Link: https://www.sublimetext.com/
#10) K Develop
K Develop is open-source IDE for writing a C program. It allows programmers to work on a project of any size. This program helps you to improve the quality of code. The tool offers customizable color schemes and shortcuts.
Features:
- It uses a version control system like Git, Subversion, Bazaar, and CVS.
- You can jump to function declaration or definition.
- It can highlight the code.
- This tool supports Solaris, Linux, macOS, Windows, and more.
Link: https://www.kdevelop.org/
#11) Apache Arrow
Apache Arrow is a software framework for developing applications in C. This application can highlight the code. It supports numerous varieties of industry-standard programming languages.
Features:
- It supports columnar layout that can be optimized for data locality.
- You can develop programs fast.
- It provides numerous computational libraries.
- This tool is organized for the efficient operation of analytic on modern hardware.
- Supported platforms are Linux, Windows, and macOS.
Link: https://arrow.apache.org/
#12) Lazarus IDE
Lazarus is a program for rapid application development. This tool offers numerous components and graphical form designer to create a complex GUI. It has an integrated debugger for the testing program.
Features:
- Automatic synchronization between code and GUI forms.
- You can add or make changes in existing code components without any hassle.
- It is capable of handling large projects.
- You can project on any operating system and compile it.
Link: https://www.lazarus-ide.org/
#13) Brackets
Brackets is open source editor for developing web applications. This tool can highlight the pair of brackets. It enables you to customize UI available quickly.
Features:
- It helps you to quickly edit the C code.
- You can connect your browser in real time.
- You can efficiently manage the project.
- Provides preprocessor support, live preview, and inline editors.
- This app can be used on Linux, Windows, and Mac operating systems.
Link: http://brackets.io/
#14) EMACS
Emacs is a Unix based tool that provides a highly customizable feature. This application provides a packaging system for installing and downloading numerous extensions, and it supports syntax coloring. It offers complete built-in documentation.
Features:
- Supports Unicode for numerous human scripts.
- You can customize this app using the Emacs Lisp code.
- Emacs offers complete built-in documentation.
- This app offers a tutorial for new users.
- You can use this software on GNU, Windows, or mac operating system.
Link: https://www.gnu.org/software/emacs/
#15) VI/VIM Editor
VI/VIM Editor is a software for a writing C program. It offers a good search and replaces text facility. This program can highlight the syntax. The software has in-built facility for comparing files.
Features:
- It provides shortcuts for ease of access.
- VI/VIM Editor supports screen splitting editing more than one file.
- The tool can edit compressed files.
- It includes multiple undo and redo facility.
- This application can be used on UNIX operating system.
Link: https://www.vim.org/
#16) Notepad++
Notepad++ is a code editor that can be used with Windows. This tool highlight syntax and keyword. It helps you to work with multiple open files in a single window.
Features:
- This C IDE for Windows highlights brackets written in the C program.
- You can zoom in or zoom out the screen.
- Macro (Automatic expandable instruction) recording and playback is possible.
- You can easily customize GUI in your computer.
- It supports the multi-language environment.
- Supported platform is Windows.
Link: https://notepad-plus-plus.org/
#17) Codeanywhere
Codeanywhere is editor for writing C program. It enables you to easily customize your development environment. This software helps you to build a program from PC, tablet, and mobile phone.
Features:
- It offers command prompt in the cloud.
- This application enables you to share the project with your colleague.
- It allows you to set permission for each share.
- It allows you to compare two files side by side.
- It enables you to save changes to a remote server.
- Codeanywhere helps you to move or copy a folder from one server to another.
- Supported platform is Windows.
Link: https://codeanywhere.com/
#18) Geany
Geany is a C Editor software that uses GTK open-source toolkit. This editor autocompletes words or brackets. It enables you to customize themes and adding new file types. The tool provides a symbol list that helps you to know where the symbol is defined.
Features:
- Developers can easily add new plugins or improve the existing ones.
- You can easily compile and execute code.
- It simplifies project management.
- Supports code folding (selectively hide and display file).
- It can auto-close HTML and XML tags.
- Supported platform is Windows and Linux.
Link: https://www.geany.org/
#19) AWS Cloud9
Cloud9 is a cloud-based editor that enables you to write, run, and debug code with any browser. It is one of the best software for C Programming which helps you to work from anywhere using an internet-connected machine. This IDE has an inbuilt image editor to resize, crop or rotate images.
Features:
- You can adjust panels in any direction by simple drag and drop.
- It has an integrated debugger to set a breakpoint.
- This tool has a built-in terminal that enables you to see the command output from the server.
- It supports keyboard shortcuts for easy access.
- You can share the development environment with your development team.
- Cloud9 offers a variety of themes.
- A supported platform is a cloud.
Link: https://aws.amazon.com/cloud9/
#20 Koding
Koding is a C compiler for Windows. It enables you to write and share the C program on any infrastructure for distributed applications. This app allows you to connect your local development workflows and tools to the cloud with a single command.
Features:
- It enables you to collaborate with other people.
- Your team can find inefficiencies in the program.
- It is designed for large teams to save time on configuring dev environments.
- You can seamlessly develop a project in the cloud.
- Administrators can provide secure user permissions.
- You can deploy more than one (VMs (Virtual Machines)).
- Supported platforms are Windows, Mac, iOS, and Android.
Link: https://www.koding.com/
FAQ
Everything has been digitized in this digital era, and nothing seems possible without programming. The fact that C is the building block of all the programming languages can’t be denied. Also, the extended version of C is C++, which you can call a subset of C. Every one of us must have gone through the basic concepts of this language before stepping into the world of programming. And when it comes to implementing something no matter big or small, nothing can replace IDEs.
What are IDEs? From working for small projects to big implementations like web applications, all you need is a single platform where you get numerous features required such as text editor, syntax highlighter, customizable interfaces, compiler, code auto-save, version control, debugger, build automation, and deployment. And those platforms which offer these features are called IDEs (Integrated Development Environment). It is also believed that Microsoft’s Visual Basic was the first IDE launched in 1991.
Why choose IDEs? Because it makes writing programs easy, efficient, and effective. It saves a lot of time by converting the program to machine-level code or byte code. And the best part, is you also get the freedom to choose the programming language of your interest. As there are so many IDEs today, you would have been confused as to which one to use.
Don’t Worry! To avoid confusion, we have brought the Top 7 IDEs for C/C++:
1. Eclipse
Eclipse is indeed a free and open-source IDE written in Java and developed by IBM. It is well known for its broad community support as it supports nearly thirty programming languages (and the C/C++ version is named Eclipse CDT (Eclipse C/C++ Development Tooling). Eclipse IDE for C++ has all the features one would expect like code completion, auto-save, compilation and debugging support, remote system explorer, static code analysis, profiling, and refactoring. You can also extend its functionalities by integrating various external plugins and also this is multiplatform and can run on Windows, Linux, and macOS.
It comes with various functionalities:
- Easier Project Creation.
- Supports Static Code Analysis.
- Great Graphical User Interface with drag-and-drop functionality.
- Git integration.
Other Programming Languages Supported: C, C++, C#, Java, JavaScript, COBOL, Perl, PHP, Python & others.
2. Visual Studio
Visual Studio (developed by Microsoft), written in C++, is an IDE that can be used to build powerful, high-performance applications. It can only run in Windows. Visual Studio has immense features like “IntelliSense”, “UI”, “debugger”, and “Plug-ins”. It helps you to perform various operations like code, build, deploy, collaborate, analyze, and learn. It is a complete set of tools and technologies used for software development. It is listed in 657 company stacks and 978 developer stacks.
Visual Studio Code (VS Code)
Visual Studio Code is also an open-source code editor developed by Microsoft (tech-giant). Even though it works well with all types of Operating Systems like Windows, macOS, and Linux, it is well known for windows that work with Git version control systems. Also, it comes with the remarkable features of intelligent code completion based on variable types, essential modules, and function definitions. It provides the best C++ compiler and you can control various versions of one program very easily.
Overall, VS Code’s efficiency and portability balanced with its powerful array of features make it stand out as the best all-around code editor for development in C++.
Other Programming Languages Supported: C, C++, C#, CSS, Go, HTML, Java, JavaScript, Python, PHP, TypeScript, and much more!
3. NetBeans
NetBeans, a free and open-source IDE, developed by Apache Software Foundation – Oracle Corporation is considered one of the best IDEs for C++ developers. It also has a project window that shows a list of projects currently existing on it and allows you to create C/C++ applications using dynamic and static libraries. The reason behind highly recommended for students or beginner-level C/C++ developers is because of its better drag and drop functionalities, similar to Eclipse. It runs on multiple platforms such as Windows, Linux, Mac OS X, and Solaris.
NetBeans comes with multiple characteristics:
- Rich set of plugins.
- Automatically adjusts indent and format of the code.
- Code refactoring, bracket matching, automatic indentation, unit testing, bracket matching, file navigation, source inspection, packaging, etc.
- Qt Toolkit Support.
- Supports Remote Development.
Other Programming Languages Supported: Java, HTML, HTML 5, C, C++ and others.
4. CLion
CLion is developed by Jetbrains and is the most-recommended cross-platform(supports macOS, Linux & Windows integrated with the CMake build system) IDE for C++ programmers. Before opting for CLion, you need to know that it is a paid IDE and you’ll have to purchase the respective subscription to move ahead with it. However, you can move on with their Education and Open Source subscription plan to use it for free. It also counts itself as one of the few IDEs to have local and remote support, which allows you to code on a local machine but compile on remote servers. It supports Embedded Development and can be integrated with CVS (Concurrent Versions System) & TFS (Team Foundation Server).
It contains the below-mentioned features:
- Better code assistance, safe refactoring & very quick documentation,
- Allows you to test individual units of source code and project management, etc.
- Testing individual units of source code, running and debugging code with ease, customizations, code analysis, and auto-formatting.
- Embedded terminal.
- Integrated debugger.
Other Programming Languages supported: Kotlin, Python, Swift, etc. via plugins.
5. Code::Blocks
Moving ahead, we have Code::Blocks, an open-source C/C++ IDE developed using wxWidgets, which is a GUI toolkit. It supports Windows, macOS, and Linux. You can also access the source code of Code::Blocks and make contributions by adding new features to it as per your requirements for a C++ IDE. It’s very extensible and its fully configurable feature lets it meet the most demanding needs of its users. The IDE which has all the features you need has a consistent look, feel, and operation among all other platforms.
Following are the key features it has:
- Smart Code Completion.
- Easy Navigation.
- Tabbed interface, code completion, easy navigation.
- Supports various compilers – GCC, Clang, and Visual C++.
- Full Breakpoints Support.
Other Programming Languages Supported: C, C++, Fortran.
6. CodeLite
Next, we have CodeLite, which is also a free and open-source IDE for C++. It is considered one of the best IDE for code refactoring and supports Windows and Mac operating systems. It also provides better support for compilers with built-in GCC, Clang, and Visual C++. It is a good option for testing and debugging in C++ because of its easy-to-use and lightweight features. Similar to Code::Blocks, CodeLite uses the wxWidgets toolkit, and you can debug and compile using free tools like MinGW and GNU debugger. It provides better support for compilers by giving hints on errors just the moment you click on them. Through the wxWidgets creation tool, developers can design cross-platform graphical user interfaces easily.
- Spell Checker
- Graphical Diff Utility
- Database Explorer
- It can be integrated with Cscope integration (a text-based interface to search a code).
Other Programming Languages Supported: C, C++, PHP, and JavaScript (mainly for backend developers using Node.js).
7. QtCreator
This is again an open-source that is free for freshers and requires a commercial license for experienced developers. It runs on Windows, Linux, and macOS and developers can create mobile and desktop applications and embedded platforms. It uses the C++ compiler from the GNU Compiler Collection on Linux. On Windows, it uses MinGW or MSVC with the default install and can also use Microsoft Console Debugger when compiled from source code.
Characteristics it possesses:
- Version Control.
- Sophisticated Code Editors which has code completion, syntax highlighting, refactoring, and built-in documentation.
- Libraries for UI development, machine-to-machine communication using imperative C++, and other approaches.
Other Programming Languages Supported: Python, Ring, Go, Rust, PHP, and Java.
Some other IDEs or text editors you can refer to are:
Vim: Vim is a free and open-source text editor which can be considered an IDE. It is an improved version of the vi editors distributed with most UNIX. It is installed by default in Mac and Linux systems whereas you can install it in Windows as per your need.
Dev C++: Dev C++ is a free and graphical IDE that uses a MinGW compiler system that can create Windows and Console-based C/C++ applications. It was originally developed by “Bloodshed Software”. This supports Windows OS only.