0
후속은 :make : 패턴 규칙이 적용되지 않았습니까?
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은 다음과 같습니다
/pps
/src
/obj
/bin
Makefile
그리고 메이크 파일의 내용이 있습니다 : Set up a development environment on Linux targeting Linux and Windows
프로젝트 디렉토리는 다음과 같습니다 테스트 용.
이 메이크 파일은 작동하지 않습니다
$ make
make: *** No rule to make target `obj/print_current_dir.o', needed by `bin/pps-linux'. Stop.
나는 문제가 %의 .o 인 규칙을 생각합니다. 나는 그것이 사소한 것이라고 확신하지만, 나는 경험에 익숙하지 않다.
감사합니다.
참고. 그러므로 아마도 $ (OBJ_DIR)/%. o'를 첫 번째 타겟으로 삼기를 원하지 않을 것입니다. –