首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用makefile vpath

如何使用makefile vpath
EN

Stack Overflow用户
提问于 2021-12-06 17:51:31
回答 1查看 96关注 0票数 -1

这个,简化了,makefile工作得很好。

代码语言:javascript
复制
# folder for .o files
ODIR=./obj

$(ODIR)/cutest.o :
    g++ -o  $(ODIR)/cutest.o -c ../../../raven-set/cutest.cpp

这个尝试使用vpath,失败了。

代码语言:javascript
复制
#source file search paths
vpath %.cpp ../../../raven-set

# folder for .o files
ODIR=./obj

$(ODIR)/cutest.o :
    g++ -o  $(ODIR)/cutest.o -c cutest.cpp

像这样

代码语言:javascript
复制
g++ -o  ./obj/cutest.o -c cutest.cpp
cc1plus.exe: fatal error: cutest.cpp: No such file or directory

@MadScientist的建议:

代码语言:javascript
复制
# folder for .o files
ODIR=./obj

$(ODIR)/cutest.o : cutest.cpp
        g++ -o $@ -c $<

但这也失败了

代码语言:javascript
复制
mingw32-make: *** No rule to make target 'cutest.cpp', needed by 'obj/cutest.o'.  Stop.
EN

回答 1

Stack Overflow用户

发布于 2021-12-06 18:17:57

Make将不会查看编译命令的文本,并尝试查找对先决条件字符串的引用并替换它们。

Make只替换make变量。

因此,您应该在菜谱中使用自动变量

代码语言:javascript
复制
$(ODIR)/cutest.o : cutest.cpp
        g++ -o $@ -c $<

ETA这是为我工作的:

代码语言:javascript
复制
$ cat Makefile
vpath %.cpp src
obj/cutest.o : cutest.cpp
        g++ -o $@ -c $<

$ mkdir src
$ touch src/cutest.cpp

$ make
g++ -o obj/cutest.o -c src/cutest.cpp
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70249738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档