У меня есть Makefile (для NMake, а не для GNU), который отлично работает с компилятором CL по умолчанию. Я собирался поэкспериментировать с Clang, используя программу совместимости clang-cl. Но я, кажется, получаю ошибки в Makefile, которые не связаны с компилятором. Например, у меня есть фрагмент кода в Makefile
MAKHDR=$(MAKDIR)header.$(MAKEXT)
!if ![(echo HDR=\>$(MAKHDR)) && for %i in ($(HDRDIR)*.$(HDREXT)) do @echo %i\>>$(MAKHDR)]
!include $(MAKHDR)
!else
!error Cannot locate header files
!endif
Из командной строки
set CXX=clang-cl
nmake
Этот код должен найти все заголовочные файлы и поместить их в переменную (что-то вроде подстановочного символа в GNU Make). Но я получаю сообщение об ошибке «Отказано в доступе» до того, как сработает ошибка !, и после этого файл заголовка с именем не существует на диске. Фактически, с небольшими изменениями в коде я обнаружил, что я также не могу вывести вывод на стандартный вывод. Но это работает, когда я делаю это с CL по умолчанию. Так почему же переопределение компилятора изменяет возможность эха?
Если вам интересно, полный Makefile можно найти на моем GitHub но имейте в виду, что это нетрадиционно.