【发布时间】:2016-09-09 00:37:20
【问题描述】:
我正在努力解决以下问题:
我想在我的 Makefile 中使用 tput 作为颜色,但它需要环境变量 $TERM (并且带有 \033[0;31m 的 echo 替代方案不可移植,并且在所有计算机上的行为方式都不同)。
在没有变量的环境中,make 失败并且程序没有被编译。 我已经尝试在 Makefile 中搜索环境变量测试,但到目前为止没有成功。
这是我想做的一个例子:
define my_color
@tput setaf $2
@tput bold
@echo $1
@tput sgr0
endef
CC = gcc
CFLAGS = -Wall -Wextra
SRCS = my_super_file.c
OBJS = $(SRCS:.c=.o)
NAME = super_programm
all: $(NAME)
$(NAME): $(OBJS)
$(call my_color, " Compiling $<", 2)
$(CC) -o $(NAME) $(OBJS)
clean:
rm -rf $(OBJS)
fclean: clean
rm -rf $(NAME)
re: fclean all
.PHONY: all re clean fclean
这里有一个更完整的例子:https://github.com/Hellfire01/Makefile/blob/master/Makefile
两者都可以在任何计算机上正常工作,但不能在我的服务器上
我想要做的是只有一个 Makefile 能够在我的计算机和服务器上工作,我尝试查看函数 ifeq 但我没有成功让它工作。
任何帮助将不胜感激感谢您的阅读。
【问题讨论】:
标签: c++ c function makefile environment-variables