我有一個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」命令重新編譯這個庫而不輸出「Nothing to be done for全部「,這裏是包含靜態庫的新Makefile:
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
我該如何解決這個問題,以防止生成文件重新編譯,當靜態庫已編譯,不需要重新編譯?
非常感謝您
感謝了很多關於你的答案和你的筆記關於-W國旗! – void