Последующая деятельность: Set up a development environment on Linux targeting Linux and Windowsmake: правило шаблона не применяется?
реж проекта выглядит следующим образом:
/pps
/src
/obj
/bin
Makefile
И содержание Makefile это:
OBJ_DIR = obj
SRC_DIR = src
BIN_DIR = bin
INCLUDE = -I./$(SRC_DIR)
LIBS =
_SRCS = print_current_dir.c test_main.c
_OBJS = print_current_dir.o test_main.o
SRCS = $(addprefix $(SRC_DIR)/,$(_SRCS))
OBJS = $(addprefix $(OBJ_DIR)/,$(_OBJS))
$(OBJ_DIR)/%.o: %.c %.h
$(CC) -c -o $(OBJ_DIR)/[email protected] $< $(CFLAGS)
all: $(BIN_DIR)/pps-linux $(BIN_DIR)/pps-win32
$(BIN_DIR)/pps-linux: $(OBJS)
CC = cc
CFLAGS = -g -Wall $(INCLUDE) $(LIBS)
$(BIN_DIR)/pps-win32: $(OBJS)
CC = i586-mingw32msvc-cc
CFLAGS = -g -Wall $(INCLUDE) $(LIBS)
.PHONY: clean
clean:
rm -f $(OBJS) $(SRC_DIR)/~ core $(BIN_DIR)/*
файловсписок print_current_dir.c и test_main.c являются просто для тестирования.
Этот Makefile не работает:
$ make
make: *** No rule to make target `obj/print_current_dir.o', needed by `bin/pps-linux'. Stop.
Я думаю, что проблема с правилом% .o. Я уверен, что это тривиально, но я не очень разбираюсь в этом.
спасибо.
Обратите внимание, что если вы наберете 'make' без указания цели, первый в файле используется по умолчанию. Поэтому вы, вероятно, не хотите '$ (OBJ_DIR) /%. O' в качестве вашей первой цели. –