Makefile:如何更改var的前缀?

标签 makefile

我有包含 src、obj 和 inc 目录的项目文件夹。

我用 obj - OBJS 声明 var

SDIR = src
ODIR = obj

# I change /src/*.c to /obj/*.o
_OBJS = $(patsubst %.c, %.o, $(wildcard $(SDIR)/*.c))
# I need to change /src/*.o to /obj/*.o
OBJS = $(??? $ODIR ??? $_OBJS ???)

现在在 _OBJS - ./src/*.o 中,如何将 OBJS 中的 /src/ 更改为 /obj/

谢谢。

最佳答案

这个呢(如果我理解正确的话):

SDIR = src
ODIR = obj

# I change /src/*.c to /obj/*.o
_OBJS = $(patsubst %.c, %.o, $(wildcard $(SDIR)/*.c))
# I need to change /src/*.o to /obj/*.o
_OBJS := $(subst $(SDIR), $(ODIR), $(_OBJS))

debug:
    @echo $(_OBJS)

输出/测试:

$ mkdir ./src/
$ touch ./src/a.c
$ touch ./src/b.c
$ touch ./src/c.c
$ ls ./src/
a.c  b.c  c.c
$ make debug
obj/a.o obj/b.o obj/c.o

关于Makefile:如何更改var的前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34240501/

相关文章:

c++ - 编写 scons 脚本来处理许多子目录中文件的编译

linux - 在 Linux 上使用 makefile 为复杂项目构建动态库

c++ - 使用 C++ makefile 链接文件

c - 如何将参数值从make命令行传递给编译器

linux - 如何在Linux上查找指定目录中所有使用特定 header 的文件?

c - 不同目录中多个文件的 Makefile

makefile - 在创建顶级目标时告诉 'make' 忽略依赖项

c++ - 这个 makefile 有什么问题

linux - 我的 Makefile 有问题吗?

c++ - aam-opencv 编译因 OpenCVConfig.cmake 失败