的makefile如何退出并生成文件在文件在同一时间日志中的数据发生错误时
RUN_EXE = xyz.exe
SOME_DIR_PATH = ../folder1/
ifdef $(MAKECMDGOALS)
ifeq ($(MAKECMDGOALS), "target_1")
ABC = status.log
ARGS_TO_EXE = "argc1"
endif
ifeq ($(MAKECMDGOALS), "target_1")
ABC = file2.txt
ARGS_TO_EXE = "argc2"
endif
else
ABC = status.log file2.txt
ARGS_TO_EXE = ""
endif
# phony define
.PHONY = default target_1 target_2
# if target not mention run default
default: $(ABC)
target_1 target_2:$(ABC)
$(ABC):
$(CD) $(SOME_DIR_PATH) && ($(RUN_EXE) $(ARGS_TO_EXE) || (exit 1;)) 2>&1 | tee -a ../status.log; \
我一直在使用的第一makefile文件我正在调用这个Makefile 2个makefile文件。 如果出现一些错误,应该成功返回到第一个makefile。
用于测试目的我在可执行文件中创建了一个错误,我试图以不存在的读取模式打开一个文件。所以我的可执行文件将通过错误,它就会出来
当我给
make target_1
错误:错误打开文件(用C printf函数,并同样会在文件中)
make target_2
错误:打开文件时出错(使用c printf函数,文件也一样)
但是这里出现问题
make
错误:打开文件时出错(使用c printf函数,文件中也一样)。 错误:打开文件时出错(使用c printf函数,文件也一样)。
它应该在第一次打印之后退出,并成功登录status.log文件,但不会发生。 AS $(ABC)包含两个目标status.log和file2.txt,所以在第一次运行时尝试构建status.log,然后尝试构建file2.txt。
但是,有没有在第一次运行时,它应该返回到第一Makefile和status.log记录错误也,不应该对FILE2.TXT跑出来用1号出口
配方不会改变我只有可执行文件的参数正在改变。这就是为什么我想坚持单一食谱。 我试过你的食谱,但它不会将生成的错误重定向到文件。 –
@RohanG使用'|&'重定向到'tee'而不是'|'将stdout和stderr重定向到它。 –