La construction de Makefile C ++ ne peut pas être annulée sous Windows 7, Eclipse CDT, MinGW et MSYS2

Je gère un système de génération C ++ fonctionnant sous Windows et constitué des composants nommés. Lors de la mise à niveau de Windows XP vers Windows 7 il y a quelque temps, nous avons constaté que les générations pouvaient encore être annulées. Le bouton Annuler Eclipse est tout gris, mais la construction se poursuit toujours jusqu’au bout. Nous avons également constaté qu’en utilisant MSYS au lieu de MSYS2, la construction peut également être annulée dans Windows 7, mais la construction multicœur (par exemple, make -j4) est suspendue dès le début (lorsque vous utilisez MSYS2). Nous avons besoin du multicœur, ce n’est donc pas une solution.

Nous avons effectué des recherches et sums parvenus à la conclusion que MSYS2 commençait le processus de création à l’aide de l’indicateur de création de processus WinAPI CREATE_NEW_PROCESS_GROUP. Nous supposons que cet indicateur n’est pas exécuté dans Windows XP, ce qui explique pourquoi caneling fonctionne ici.

Nous lisons que CREATE_NEW_PROCESS_GROUP provoque un autre appel WinAPI, SetConsoleCtrlHandler (NULL, TRUE), qui à son tour provoque la désactivation de Ctrl-C. Le processus peut uniquement être interrompu par Ctrl-Break. Nous pourrions vérifier ce comportement en testant notre version depuis la ligne de commande.

Quelle est la solution prévue pour ce problème? Est-il possible qu’Eclipse envoie Ctrl-Break au lieu de Ctrl-C en appuyant sur Annuler? Ou bien notre MSYS2 est-il mal configuré et ne doit-il pas supprimer Ctrl-C pour le processus de construction? Ou bien notre parsing est-elle un déchet et le problème est quelque chose de complètement différent?