1

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 として作成したもの) を見つけることができません。

今、それは私を夢中にさせています

4

1 に答える 1