的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重定向到它。 –