Windows GNU Make в некоторых случаях нарушает цветовые коды POSIX, но почему? - PullRequest
0 голосов
/ 03 июня 2019

У меня есть проблема с проектом GNU make в Windows 10. Я пытаюсь добавить модульные тесты Google в свой Makefile, и я начал экспериментировать с такими целями:

utest_compile:
 @echo Compile unit test
 g++ -o Utest.exe $(COMPILE_FLAGS) $(SOURCES)
 @echo Compile finished!

utest_run:
 @echo Running unit tests
 Utest.exe --gtest_color="yes"
 @echo Run finished!

utest: utest_compile utest_run

Запуск utest_complie и utest_run по отдельности работает отлично, но при попытке запустить utest цветовые коды на выходе каким-то образом запутываются, как печать [0;32m[ OK ] [mDummytest в цвете по умолчанию вместо печати [ OK ] Dummytest в зеленом цвете.

Я пытался выяснить, как GNU анализирует вывод и передает его, особенно в отношении фальшивых целей и их зависимостей, но любое правило, которое я смог найти, в данном случае, похоже, не применимо. (например, правила при сохранении вывода в переменной или при перенаправлении в файл и т. д.)

Знаете ли вы, какие правила синтаксического анализа / форматирования применяются здесь и как сохранить коды цветов от повреждения?

EDIT Тем временем я узнал следующее: Это прекрасно работает (печатает цветной текст):

utest: utest_compile
    @echo Run unit tests...
    -$(TARGET_DIR)/UTest.exe --gtest_color="yes" > ut.log
    @echo Result:
    @tail -n 1 ut.log
    @echo Unit test execution finished. 

Но это не удается (печатает нечеткий нечеткий текст):

utest: utest_compile
    @echo Run unit tests...
    $(RM) -f ut.log
    -$(TARGET_DIR)/UTest.exe --gtest_color="yes" > ut.log
    @echo Result:
    @tail -n 1 ut.log
    @echo Unit test execution finished. 

Я подозреваю, что дополнительная строка, использующая rm, вероятно, переключается между режимами терминала. Я использую встроенный в терминал Linux интерпретатор терминала Linux 10, который, скорее всего, все еще находится в бета-версии, поэтому он может объяснить проблему, но я до сих пор не знаю фактических деталей здесь, и я был бы рад любой информации.

...