Makefile を作成しようとしていますが、いくつか問題があります
最初に私が持っている
2 つのソース ファイル: ~/main.c ~/lib/library.c 1 つのヘッダー ファイル: ~/include/library.h
main.c と library.c はどちらも同じヘッダー ファイル library.h を共有します。
# Compiler options
CC = gcc
INC = -I../include
CFLAGS = -Wall -g -c $(INC)
LIB = -L../lib
LFLAGS = -Wall -g $(LIB)
# Dependencies
LIBS = -libmylib
OBJS = main.o
SRCS = $(OBJS:.o=.c)
EXEC = a.out
# Other rules
RM = rm -rf
TAGS = tags
BAK = Makefile.bak
all: $(EXEC)
@echo ------------------------ Compile Complete ----------------------------
.PHONY: clean depend
$(EXEC): $(OBJS)
$(CC) $(LFLAGS) -o $@ $^ $(LIBS)
.c.o:
$(CC) $(INC) -M $^
$(CC) $(CFLAGS) -o $@ $<
clean:
$(RM) *.o *~ $(EXEC) $(TAGS) $(BAK)
depend: $(SRCS)
makedepend $(INC) $^
ライブラリからルールを作成することはできないと言い続けています.o
さらに、別の質問があります
「make」を呼び出した後に Makefile が実行されると、
続いて、行 .co または %c: %o (GNU 拡張バージョン) に移動し、make
.o ファイル。しかし、なぜ clean も呼び出されず、自動的に依存しないのですか?
以前のバージョンの Makefile からいくつか編集しました
今回は、(前の問題とかなり似ています)
ライブラリ パス (-I../lib) を明確にしました。
Makefile がアーカイブ ファイル (../lib dir に libmylib.a として作成したもの) を見つけることができません。
今、それは私を夢中にさせています