patsubst在GNU make中不起作用?

时间:2013-03-29 13:52:06

标签: c++ makefile gnu-make

我在Windows 8上使用GNU make来了解makefile。我所指的教程是为Linux编写的,所以我正在修改给出的makefile,据我所知,例如:将'/'替换为'\'等。

我的makefile内容是:

CC=g++
INCLIST=functions.h
INCDIR=..\include
OBJDIR=.\obj
BINDIR=..\bin
_OBJLIST = main.o
OBJ=$(patsubst %,$(OBJDIR)\%,$(_OBJLIST))

all: main.o

main.o: main.cpp
    $(CC) -c -I $(INCDIR) main.cpp -o $(OBJ)

我可以通过

手动编译main.cpp
g++ -c -I ..\include main.cpp -o .\obj\main.o

但是,当我运行make时,输出为:

g++ -c -I ..\include main.cpp -o .\obj%

并且目标文件是在当前目录而不是.\obj目录中创建的,并且名为./obj%而不是必需main.o。我在Ubuntu上运行了相同的设置,它工作得很好,任何人都可以解释原因吗?

谢谢.. :))

1 个答案:

答案 0 :(得分:1)

反斜杠是一个转义标记,因此\%是一个文字百分号。此外,/也适用于Windows。