Сборка C ++ Makefile не может быть отменена с помощью Windows 7, Eclipse CDT, MinGW и MSYS2

Я поддерживаю систему сборки C ++, работающую в Windows и состоящую из названных компонентов. Когда мы обновили Windows XP до Windows 7 некоторое время назад, мы заметили, что сборки могут быть отменены больше, кнопка Eclipse Cancel просто не работает, но сборка всегда выполняется до конца. Мы также обнаружили, что при использовании MSYS вместо MSYS2 сборка может быть отменена также в Windows 7, но многоядерная сборка (например, make -j4) зависает с самого начала (при работе с MSYS2). Нам нужен многоядерный, так что это не решение.

Мы провели некоторое исследование и пришли к выводу, что MSYS2 запускает процесс make, используя флаг создания процесса WinAPI CREATE_NEW_PROCESS_GROUP. Мы предполагаем, что этот флаг не выполняется в Windows XP, объясняя, почему там работает caneling.

Мы читаем, что CREATE_NEW_PROCESS_GROUP вызывает другой вызов WinAPI SetConsoleCtrlHandler (NULL, TRUE), что, в свою очередь, приводит к отключению Ctrl-C, процесс может быть остановлен только с помощью Ctrl-Break. Мы могли проверить это поведение, протестировав нашу сборку из командной строки.

Каково решение этой проблемы? Возможно ли, чтобы Eclipse отправлял Ctrl-Break вместо Ctrl-C при нажатии кнопки Отмена? Или наш MSYS2 неправильно настроен, и он не должен подавлять Ctrl-C для процесса сборки? Или наш анализ мусор и проблема в чем-то совершенно ином?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]