我有一个似乎无法解决的问题。我正在尝试使用-I
标志将我的包含添加到编译器将查看的列表中。它不是直接查看包含所有标准库的/ usr / include目录,而是首先在我的include目录中查找头文件。但它似乎没有找到文件,因为我编译时会出现这种错误的长列表:
src/termcaps/termcapbis.c:13:10: fatal error: 'termcaps.h' file not found #include <termcaps.h>
(这是多个错误中的一个例子,都是同样的事情。)
所以我想知道我的Makefile是否有问题,或者我是否需要为编译器做其他事情以了解我的头文件的位置。
这是我的makefile:
NAME = 42sh
SRC_DIR = "src"
SRC_DIRS = $(shell find $(SRC_DIR) -type d -follow -print)
SRC_FILES = $(shell find $(SRC_DIRS) -type f -follow -print | grep "\.c")
OBJ_DIR = "obj"
OBJ_DIRS = $(SRC_DIRS:$(SRC_DIR)%=$(OBJ_DIR)%)
OBJ_FILES = $(SRC_FILES:$(SRC_DIR)%.c=$(OBJ_DIR)%.o)
FLAGS = -Wall -Wextra -Werror
INCLUDE = -Iinclude -Ilibft/include
LIB = -Llibft -lft -ltermcap
all: $(NAME)
$(NAME): $(OBJ_FILES)
make -C libft
gcc $(FLAGS) $^ $(LIB) -o $@
$(OBJ_DIR)%.o: $(SRC_DIR)%.c
@mkdir -p $(OBJ_DIRS) $(OBJ_DIR)
gcc $(FLAGS) $(INCLUDE) -o $@ -c $<
clean:
@rm -rf $(OBJ_DIR)
@make fclean -C libft
fclean: clean
@rm -rf $(NAME)
@make fclean -C libft
re: fclean $(NAME)
.PHONY: all clean fclean re
有什么建议吗?