1

練習用に簡単なメイクファイルを書いてみました。

2 つのディレクトリがあります。1.srcs( .c)、2.include( .h)

すべての .c ファイルを含む SRCS 変数を定義しようとします。

現在のディレクトリとsrcsディレクトリにあります。

以下は私のMakefileです

CURDIR = $(shell pwd)
OBJDIR = $(CURDIR)/objdir
VPATH = $(CURDIR)/srcs
SRCS = $(wildcard *.c)
OBJS = $(patsubst %.c, %.o, $(SRCS))

all: main

main: $(OBJS)
        gcc -o $@ $^

$(OBJS): $(SRCS) | $(OBJDIR)
        gcc -c -o $@ $<

$(OBJDIR): 
        mkdir objdir

現在の/ srcディレクトリをVPATHとして指定して検索します

現在のディレクトリと current/srcs 内のすべての *.c ファイルですが、

/srcs ディレクトリに *.c ファイルが見つかりません。

Makefileで変数を定義するときに、makeがVPATHを使用できない可能性があります

右?それが正しければ、より良いアプローチを教えてください:)

ありがとう。

4

1 に答える 1

1

VPATHmake が前提条件を見つけるために検索する必要があるディレクトリ用です。

$(wildcard)検索する場所は変わりません。

VPATHfoo.cルールの前提条件リストで (明示的または暗黙的に)を使用し、make が現在のディレクトリとVPATHそのファイルのディレクトリを参照できるようにします。

SRCSディレクトリからの.cファイルを含めたい場合は、割り当ての追加の呼び出しにsrcs含める必要があります。srcs/*.c$(wildcard)SRCS

SRCS = $(wildcard *.c) $(wildcard srcs/*.c)
于 2015-11-29T16:15:03.277 に答える