Я пытаюсь написать Makefile
для проекта, который будет скомпилирован с GNU make
в Cygwin
.
Некоторые переменные среды определены в Windows, например, путь к некоторому SDK. Например, SDKPATH C:\MySDKPath
.
В Makefile я использую этот путь для доступа к каталогу include SDK, среди прочего:
CFLAGS := -I$(SDKPATH)/include
В целевом правиле:
$(CC) $(CFLAGS) $< -o $@
Моя проблема в том, что после того, как make
расширит его до C:\MySDKPath/include
и передаст его в качестве аргумента компилятору, аргумент будет расширен до C:MySDKPath/include
, что, очевидно, не является намерением.
Я не могу реально изменить переменную среды, так как она устанавливается SDK, и требование к ней каждого из нас приведет к возникновению новых проблем. Я мог бы сделать быстрый и грязный поиск и замену (например, MYSDKPATH := $(patsubst C:%,/cygdrive/c%,$(subst \,/,$(SDKPATH)))
), но мне интересно, нет ли чистого, устоявшегося способа справиться с этим вероятным распространенным случаем.