清除目标上的Makefile崩溃 我想用C++编译一个C++项目,我对MaxFook不是专家,但是看起来不错,这个MaX文件有什么问题: .PHONY: all test log debug clean cleanall ####### BUILD RULES ##################################################### all: cleanall make debug clean make test clean make log log: CFLAGS := $(CFLAGS_LOG) clean: rm -f $(OBJS) cleanall: clean rm -f $(OUTPATH)$(APPNAME) \ $(OUTPATH_DBG)$(APPNAME_DBG) \ $(OUTPATH_DBG)$(APPNAME_LOG) test: $(OBJS) $(CXX) -static $(CFLAGS) -o $(OUTPATH)$(APPNAME) $(OBJS) $(LIB) strip $(OUTPATH)$(APPNAME) log: $(OBJS) $(CXX) -static $(CFLAGS_LOG) -o $(OUTPATH)$(APPNAME_LOG) $(OBJS) $(LIB) strip $(OUTPATH)$(APPNAME_LOG) debug: $(OBJS) $(CXX) $(CFLAGS_DBG) -o $(OUTPATH_DBG)$(APPNAME_DBG) $(OBJS) $(LIB)

清除目标上的Makefile崩溃 我想用C++编译一个C++项目,我对MaxFook不是专家,但是看起来不错,这个MaX文件有什么问题: .PHONY: all test log debug clean cleanall ####### BUILD RULES ##################################################### all: cleanall make debug clean make test clean make log log: CFLAGS := $(CFLAGS_LOG) clean: rm -f $(OBJS) cleanall: clean rm -f $(OUTPATH)$(APPNAME) \ $(OUTPATH_DBG)$(APPNAME_DBG) \ $(OUTPATH_DBG)$(APPNAME_LOG) test: $(OBJS) $(CXX) -static $(CFLAGS) -o $(OUTPATH)$(APPNAME) $(OBJS) $(LIB) strip $(OUTPATH)$(APPNAME) log: $(OBJS) $(CXX) -static $(CFLAGS_LOG) -o $(OUTPATH)$(APPNAME_LOG) $(OBJS) $(LIB) strip $(OUTPATH)$(APPNAME_LOG) debug: $(OBJS) $(CXX) $(CFLAGS_DBG) -o $(OUTPATH_DBG)$(APPNAME_DBG) $(OBJS) $(LIB),c++,makefile,C++,Makefile,不断崩溃,但出现错误: make[1]: Leaving directory '/blablabla/dcp_edi/test' clean make: clean: command not found Makefile:66: recipe for target 'all' failed 很抱歉,您似乎无法发布包含太多代码的问题,我不知道该写些什么才能使此帖子比此更长。您的问题出现在这里: ####### BUILD RULES ###############################

不断崩溃,但出现错误:

make[1]: Leaving directory '/blablabla/dcp_edi/test'
clean
make: clean: command not found
Makefile:66: recipe for target 'all' failed

很抱歉,您似乎无法发布包含太多代码的问题,我不知道该写些什么才能使此帖子比此更长。

您的问题出现在这里:

####### BUILD RULES #####################################################
all:        cleanall
        make debug
        clean <<<<<<<<<<<
        make test 
        clean <<<<<<<<<<<
        make log

你应该写:

all: cleanall debug clean test clean log
(没有任何其他行)。问题是,清理不会在这里执行两次。如果不是真的需要,只需消除第一个
清洁
。否则,您可能会将
clean
目标拆分为
clean objs
clean test
。如果你不能拆分它,你就不能绕过submake调用(正如已经建议的那样)


我只是想强调解决这个问题的干净和标准的方法。

clean
不是shell命令。它是makefile中的目标<代码>全部:使干净
,基本上,如果我添加
all:cleanall使调试使干净使测试使干净使日志
它将为目标测试清除相同的错误。如果我添加
all:cleanall使调试使干净使测试使干净使日志
它将清除相同的错误目标测试错误。
Makefile:93:recipe for target'test'失败生成[1]:***[test]错误1生成[1]:离开目录'blablablabla/dcp_edi/test'Makefile:66:recipe for target'all'失败生成:**[all]错误2
@mattobob这些行之前看到的错误??要么是链接器因错误而退出,要么是无法从
PATH
变量解析
strip
。不管怎么说,这不是makefile的问题。哦,是的,你说的对,它确实在机器上找到了输出文件夹,但它应该自己创建:
/usr/bin/ld:无法打开输出文件Release/tmux\u mod\u edi:file not found
@mattobob“,但它应该自己创建”
ld
不会创建任何目录,在调用链接器之前,可以引入另一个规则或操作来创建目录。
all: cleanall debug clean test clean log