mmote.ru/content/posts/eclipse-msys2-mingw/index.md

54 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Eclipse CDT и MSYS2, учим видеть MinGW"
categories: ["cpp", "archive"]
date: 2019-07-15T00:00:00+03:00
draft: false
featured_image: miniature.jpg
---
Вот захотелось Eclipse попробовать в качестве среды разработки для C++. Везде в списках IDE для C++ она фигурирует. Иногда даже как лучшая. Что ж, будем пробовать.
<!--more-->
Пользуюсь я пакетом MSYS2, с установленным MinGW, который давным-давно сидит в PATH. После наведения красоты (спорно, конечно) при создании нового проекта мы видим это:
![Где MinGW?](whereismingw.png "Где MinGW?")
Где, спрашивается, MinGW? Он должен присутствовать в списке инструментария, но его нет. Лезем в [FAQ](https://github.com/eclipse-cdt/cdt/tree/main/FAQ#i-installed-mingw-toolchain-on-my-pc-but-eclipse-wont-find-it) пытаемся выполнить все пункты, ничего всё так же не находится. Однако в конце замечаем следующие строки:
> Despite having g++.exe or gcc.exe on your PATH and having defined MINGW\_HOME, you may still get a “Toolchain "MinGW GCC" is not detected” message (CDT 8.4 on Luna 4.4.0). Make sure that a file called "mingw32-gcc.exe" exists in MINGW\_HOME\\bin. If it doesn't exist (which happens with MinGW-W64), copy a -gcc.exe file (e.g. i686-w64-mingw32-gcc.exe) to mingw32-gcc.exe. If the dreaded message still lingers around, reboot your system (don't just logout and login).
Ага! Значит, Eclipse ищет не **gcc**, а **mingw32-gcc**. Которого у нас нет:
![Нет тут mingw32-gcc](mingw32-gcc-missing.png "Нет тут mingw32-gcc")
В официальном FAQ, как уже можно было заметить, советуют создать копию **gcc.exe** и назвать её **mingw32-gcc.exe**. Но мы поступим умнее. Начиная с Vista, в Windows присутствует утилита [mklink](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/mklink). Для создания символических ссылок, прям как в Linux. Открываем окно команд (у меня cmder) от **имени администратора**, переходим в каталог mingw32/bin и создаём ссылку:
![mklink](mklink.png)
```cmd
mklink mingw32-gcc.exe gcc.exe
```
Не знаю, нужно ли создавать ссылки для остальных частей комплекта, но для того, чтобы MinGW определился в Eclipse, этого достаточно. Проверяем:
![MinGW найден](mingwfound.png "MinGW найден")
Проверяем компилируется ли Hello World проект:
![Ошибка сборки](buildfail.png "Ошибка сборки")
Нет. Лезем в конфигурацию и видим, что выбран не тот комплект, который мы выбирали при создании проекта. Странно. Выбираем нужный:
![Выбор комплекта](settool.png "Выбор комплекта")
Пробуем снова:
![Успешная сборка](buildok.png "Успешная сборка")
Собирается. И запускается, если кликнуть правой кнопкой по бинарю -> Run As -> Local C/C++ Application. Это создаст конфигурацию для последующих запусков. Отладчик тоже работает:
![Всё работает](debug.png "Всё работает")
В итоге, не без геморроя, но всё завелось. Как и обычно, впрочем :)