У меня есть Makefile, который хорошо работает, когда есть не статическая библиотека для компиляции:Как предотвратить мой Makefile в перелинковать из-за статическую библиотеку
CC = g++ -std=c++11
RM = rm -f
NAME = hello
SRCS = Main.cpp \
srcs/Controller.cpp \
...
srcs/Parser.cpp
OBJS = $(SRCS:.cpp=.o)
CPPFLAGS += -W -Wall -Wextra -Werror
all : $(NAME)
$(NAME) : $(OBJS)
$(CC) $(CPPFLAGS) $(CFLAGS) -o $(NAME) $(OBJS) -I./inc
clean :
$(RM) $(OBJS)
fclean : clean
$(RM) $(NAME)
re : fclean all
.PHONY : all clean fclean re
Этого Makefile работает и не перелинковать (при вводе в два раза «make», он не перекомпилирует и не выводит «ничего не делать для всех»)
Но когда я хочу скомпилировать статическую библиотеку, команда «make» перекомпилирует библиотеку без вывода «Ничего не нужно делать для все », вот новый файл Makefile, содержащий статический lib:
CC = g++ -std=c++11
RM = rm -f
NAME = hello
LIBNAME = libhello.a
SRCS = srcs/Controller.cpp \
...
srcs/Parser.cpp
OBJS = $(SRCS:.cpp=.o)
CPPFLAGS += -W -Wall -Wextra -Werror
all : $(NAME)
$(NAME) : $(OBJS)
ar rc $(LIBNAME) $(OBJS)
$(CC) $(CPPFLAGS) $(CFLAGS) -o $(NAME) $(LIBNAME) Main.cpp -I./inc
clean :
$(RM) $(OBJS)
$(RM) $(LIBNAME)
fclean : clean
$(RM) $(NAME)
re : fclean all
.PHONY : all clean fclean re
Как я могу исправить эту проблему, чтобы предотвратить перекомпилирование make-файла, когда статическая библиотека уже скомпилирована и не нуждается в повторной компиляции?
Большое спасибо
Спасибо большое о вашем ответе и записную о -W флаг !! – void