Я хочу передать стандартный вывод из команд моего компилятора в утилиту, которая окрашивает предупреждения, ошибки и т. Д. В командной консоли
SET(CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> -c -MD -MF=<OBJECT>.d <DEFINES> <INCLUDES> <FLAGS> <SOURCE> -o <OBJECT> | color.exe")
Однако ниндзя, похоже, не распознает нотацию (|
). Возможно, я мог бы добавить cmd /c
к команде вызова компилятора, используя RULE_LAUNCH_COMPILE
, но я бы предпочел независимое от платформы решение.
Существует ли правило для вывода результатов команды? (например, RULE_LAUNCH_COMPILE
, но что добавляет к командам компилятора, а не добавляет?)
Первоначально я думал о том, чтобы просто передать вывод сценария .bat
, который запускает CMake, но путь утилиты цвета определен в файле цепочки инструментов CMake, так как он включен как часть пакета одного поставщика компилятора.
[обновление]:
Следующие команды CMake решают мою начальную проблему, позволяя мне передавать выходные данные команды компиляции в другую программу:
SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "cmd /c")
SET(CMAKE_C_COMPILE_OBJECT "${CMAKE_C_COMPILE_OBJECT} 2>&1 | ${GCOLOR} -f")