c++ - patsubst 不能在 GNU make 中工作?

标签 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 上运行了相同的设置并且运行良好,任何人都可以解释为什么吗?

谢谢..:)

最佳答案

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

关于c++ - patsubst 不能在 GNU make 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15704662/

相关文章:

c++ - 有没有办法防止在编译期间使用未实现的函数?

c++ - 使用 Boost 同时记录到控制台和文件

gcc - Makefile.am 中 --static 和 -static LD_FLAGS 的区别

c++ - 防止 GNU Make 在每次构建时生成 protobuf 代码

c++ - 在 cmake 中,如何指定 qt5 pacakge 路径

c++ - 为什么 C++ 需要作用域解析运算符?

c++ - 根据当前操作系统更新 makefile 中的 CFLAGS 或 LDFLAGS

makefile - 在运行时使用 makefile 复制文件

linux - gcc 4.8.1 不会使

c++ - travis ci make -std=c++14 无法识别