gpt4 book ai didi

bash - Makefile错误消息自定义

转载 作者:行者123 更新时间:2023-12-03 08:12:52 25 4
gpt4 key购买 nike

我的makefile有问题。
我只想测试src/launcher.c上的编译是否失败。
但在此之前,我只是无法转换此bash代码:

out=$(gcc -c src/launcher.c -o /obj/launcher.o 2>&1)

到“Makefile代码”

实际上,我想做这样的事情:
Handling gcc warnings and output in a Bash Script
但是在makefile中

请,如果您有一些想法。
CC      = clang
RM = rm -f

NAME = automakefile

CFLAGS += -Wall -Wextra
CFLAGS += -O2 -march=native -fomit-frame-pointer

LDFLAGS +=

OBJS_DIR = ./obj/
SRCS_DIR = ./src/

INCLUDES += -I ./src/include

OBJS_FILES = launcher.o

OBJS = $(foreach obj,$(OBJS_FILES),$(OBJS_DIR)$(obj))

all: script $(NAME)

script:
@if [ ! -d "$(OBJS_DIR)" ]; then \
mkdir $(OBJS_DIR); \
fi

$(NAME): $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $(NAME) $(LDFLAGS)

$(OBJS_DIR)%.o: $(SRCS_DIR)%.c
//This line isn't working!
$(eval TMP=$$(gcc -c src/launcher.c -o obj/launcher.o 2>&1))
echo $(TMP)

clean:
$(RM) $(OBJS)

fclean: clean
$(RM) $(NAME)

re: fclean all

.Phony: all script clean fclean re

谢谢
祝你今天愉快

最佳答案

停止目标失败,您将获得比失败的编译更进一步的信息,因此您将看不到任何超出目标的内容。

如果您希望稍微“沉默”编译(因此看不到编译命令本身),则可以考虑使用类似silent make rules makefile的东西(基于最近的自动工具中的沉默支持)。

这不会隐藏编译命令本身的输出(警告等),但是对于成功/无警告的编译而言,无论如何都不应该有太多输出,对于失败/警告,您可能希望看到它。

如果您确实想在原始链接中执行类似的操作,则需要确保在gcc或类似的代码中隐藏从if返回的错误代码(并捕获它),然后在食谱末尾再次退出使仍然正确停止。

关于bash - Makefile错误消息自定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30980196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com