Cygwin下的Makefile和环境变量

时间:2011-06-20 03:44:32

标签: makefile cygwin

我正在尝试为MakefileGNU make编译的项目编写一些Cygwin。 某些环境变量在Windows中定义,如某些SDK的路径。比如说SDKPATH C:\MySDKPath

在Makefile中,我使用此路径访问SDK的include目录,其中包括:

CFLAGS := -I$(SDKPATH)/include

在目标规则中: $(CC) $(CFLAGS) $< -o $@

我的问题是,在make将其扩展为C:\MySDKPath/include并将其作为参数传递给编译器后,参数将扩展为C:MySDKPath/include,这显然不是意图。< / p>

我无法真正更改环境变量,因为它是由SDK设置的,并且要求每个人调整它会导致各种新问题。我可以做一些快速和脏的搜索和替换(如MYSDKPATH := $(patsubst C:%,/cygdrive/c%,$(subst \,/,$(SDKPATH)))),但我想知道是否有一个干净,既定的方法来处理这种可能的常见情况。

2 个答案:

答案 0 :(得分:1)

这是一种难看的kludge,但它似乎在UNIX中完成了这项工作,所以在Cygwin中尝试一下。

# In the makefile
SDKPATH := $(shell echo $$SDKPATH | sed 's:\\:/:g')

答案 1 :(得分:1)

由于您使用的是cygwin,因此可以使用cygpath在路径样式之间进行转换。

CFLAGS := -I$(shell cygpath -ua "$(SDKPATH)/include")

应该做的伎俩。