Что-то вспомнилось про одну из "непропущенных в статьи статью", она просто как никогда актуальна: всем пора СРОЧНО переезжать с микрософт студии. Далее быстро в несколько слов как сие сделать
самая хорошая и стабильная альтернатива компилятору VC - компилятор gcc. А самый стабильный тулчайн msys2. К слову - там и clang тоже есть, но лично я им не пользовался.итак: компилятор, окружение и репозитарий пакетов ставится прямо с оф.сайта, строго следуя их инструкции: https://www.msys2.org/
не отклоняясь, прямо строго по их инструкции. Каталог установки : c:/msys2 , настоятельно рекомендуют оставить и не изменять.
чтобы основные команды были доступны из командной строки и поменьше было секса с DLL, стоит добавить некоторые пути в %PATH% :
в результате будет получено окружение максимально близкое к Linux - bash,ls,gcc,make и прочие. То чего вечно в Windows нехватает :-)
новые пакеты и библиотеки ставятся командой pacman (как в arch linux) . Основные команды, которые будете часто использовать:
поиск пакета в репозитарии:
pacman -Ss имя_прграммы_или_библиотеки
и установка пакета:
pacman -S полное_имя_влючая_тулчайн
детальнее см. https://www.msys2.org/docs/package-management/
IDE
кто не привык к командной строке и жаждет разных красивостей - удобная и быстрая ide CodeLight (можно поставить из репозитария через pacman или нативно инсталлятором https://codelite.org/)
и старая-добрая Dev-C++ в новом воплощении https://www.embarcadero.com/ru/free-tools/dev-cpp
или Eclipse (https://www.eclipse.org/downloads/packages/installer) но он мягко говоря весьма велик :-) я его раз в год ставлю, а потом всенепременно сношу...даже частью всех фичь не пользуюсь , но место он жрёт будь здоров
все три перечисленные подхватывают msys2 и с ним работают
можно ещё приручить VSCode и его клоны, но за этим в гугл
Полезные заметки
ldd
очень нужная в windows команда из мира Linux: ldd - покажет зависимости dll или exe файла. То есть какие dll-ки ему нужны и где они лежат. Использовать крайне просто :
ldd имя_файла
все про него расскажет
полезные ключи gcc
кто впервые с gcc:
опции -Wall -Wextra включат отображение всех ошибок и предупреждений при компиляции (лучше всегда их использовать)
для генерации отладочной информации ключ -g
для управления оптимизацией -O .. -O2 или -O3 разумный выбор
генерация 32-х битного кода -m32; 64-х битного соответственно -m64
для сборки dll:
ключ -shared говорит что надо собирать разделяемую библиотеку dll (в Linux .so)
-static-libgcc упакует стандартную библиотеку С статикой
-pthread и -lpthread (сразу две) говорит что собирается код для multitread приложения (MT 4/5 - мультитред, то есть обязательные ключи, оба надо указывать)
- хитрая опция -Wl,--subsystem,windows,--kill-at скажет линкеру что имена надо генерировать без _палочки.
- еще одна -Wl,--out-implib,libВашаБиблиотека.a - значит помимо dll сделать импортируемую .a библиотеку (если dll используете только из MT можете не замуториваться)
- зато def файлы ненужны :-) компилятор по декларациям в коде разбирается что экспортируемо, а что нет
ещё раз : кто ещё не разобрался с gcc и маршрутом миграции от MS VC C/C++ то самое время этим заняться.
Ещё немного и корпорации добра начнут отзывать ключи и все "лицензии разработчика" накроются медным тазом. В некоторых случаях, даже с выпущенным вами софтом.