GNU Make 3.82
gcc 4.7.2
c89
次のメイクファイルがあります。
INC_PATH=-I/home/dev_tools/apr/include/apr-1
LIB_PATH=-L/home/dev_tools/apr/lib
LIBS=-lapr-1 -laprutil-1
RUNTIME_PATH=-Wl,-rpath,/home/dev_tools/apr/lib
CC=gcc
CFLAGS=-Wall -Wextra -g -m32 -O2 -D_DEBUG -D_THREAD_SAFE -D_REENTRANT -D_LARGEFILE64_SOURCE $(INC_PATH)
SOURCES=$(wildcard src/*.c)
OBJECTS=$(patsubst %.c, %.o, $(SOURCES))
EXECUTABLE=bin/to
all: build $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(CFLAGS) -o $@ $(RUNTIME_PATH) $(OBJECTS) $(LIB_PATH) $(LIBS)
$(OBJECTS): $(SOURCES)
$(CC) $(CFLAGS) -c $(SOURCES) $(LIB_PATH) $(LIBS)
build:
@mkdir -p bin
clean:
rm -rf $(EXECUTABLE) $(OBJECTS) bin
find . -name "*~" -exec rm {} \;
find . -name "*.o" -exec rm {} \;
私のディレクトリ構造はこのようなものproject/src project/bin
です。Makefile はproject (root)
フォルダーにあり、*.h と *.c はすべて src ディレクトリにあります。現在、timeout.c というソース ファイルが 1 つしかありません。
次のエラーが表示されます。
gcc: error: src/timeout.o: No such file or directory
これを使用して、すべてのソース ファイルを取得しました。
SOURCES=$(wildcard src/*.c)
そしてオブジェクトファイル:
OBJECTS=$(patsubst %.c, %.o, $(SOURCES))
ただし、make は、Makefile があるプロジェクト ルート フォルダーにオブジェクト ファイルを作成するようです。src ディレクトリに置くべきではありませんか?