我希望我的make文件输出(目标文件.o)到另一个子目录,例如OBJECTS_DIR =“ ./ build”
我也希望将我的.exe放在DIST_DIR =“ ./ dist”
下面的我的make文件可以工作(编译和链接),但路径相同。
# vars
CXX = g++
CXXFLAGS = -c89 -Wall -g
CC = gcc
CFLAGS = -Wall -g
SOURCES_C = main.c A.c B.c C.c D.c E.c
INCLUDES=
OBJECTS_DIR=./build
DIST_DIR=./dist
PROGRAM = main
OBJECTS = $(SOURCES_C:.c=.o)
debug := CFLAGS
all debug: $(PROGRAM)
$(PROGRAM): $(INCLUDES) $(OBJECTS)
$(LINK.c) -o $@ $(OBJECTS)
clean:
rm -f $(PROGRAM) $(OBJECTS)
我如何实现将.o文件输出到OBJECTS_DIR,然后从OBJECTS_DIR链接,然后将.exe输出到DIST_DIR。
谢谢
以下makefile尚未经过测试
请注意使用':='来定义宏,因此该宏只需要被评估一次
注意:'。PHONY:'语句是要告诉make
不会生成具有关联名称(干净,全部)的文件
CC := /usr/bin/gcc
RM := /bin/rm
CFLAGS := -Wall -g -Wextra -Wconversion -pedantic -std=gnu11
SOURCES_C := main.c A.c B.c C.c D.c E.c
OBJECTS_DIR := build
DIST_DIR := dist
PROGRAM := main
OBJECTS := $(SOURCES_C:.c=.o)
.PHONY: all
all: $(PROGRAM)
$(DIST_DIR)/$(PROGRAM): $(OBJECTS_DIR)/$(OBJECTS)
$(CC) -o $@ $(OBJECTS_DIR)/$(OBJECTS)
$(OBJECTS_DIR)/%.o:%.c
$(CC) $(CFLAGS) -c %$< -o $@
.PHONY: clean
clean:
rm -f $(DIST_DIR)/$(PROGRAM)
rm -f $(OBJECTS_DIR)/*.o