我在 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 上运行了相同的设置并且运行良好,任何人都可以解释为什么吗?
谢谢..:)
最佳答案
反斜杠是一个转义标记,所以\% 是一个百分号。此外,/也适用于 Windows。
关于c++ - patsubst 不能在 GNU make 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15704662/