C Makefile:添加文件夹bin,obj,src ..无需显式调用gcc

时间:2018-06-04 12:43:06

标签: gcc makefile

我目前有以下Makefile(我简化了一下):

ROOT=../mylib

CPPFLAGS = -I$(ROOT)/include
CFLAGS   = -Wall -Werror -Wextra -pedantic -std=c99
LDFLAGS  = -L$(ROOT)/lib
LDLIBS   = -lmylib

BIN= \
    exec1 \
    exec2 \
    exec3

OBJ=$(SRC:.c=.o)
DEP=$(SRC:.c=.d)

.PHONY: all
all: $(BIN)

exec3: exec3.o utils1.o utils2.o

-include $(DEP)

.PHONY: clean
clean:
    $(RM) *.o *~

我认为这是理所当然的,因为我对Makefiles不太熟悉。但是我现在需要为我的项目添加更多结构(现在,我的所有文件都与Makefile位于同一目录中)。

我的项目生成了几个可执行文件(exec1,exec2,exec3 ......)。有些只是一个.c文件(exec1,exec2),而有些则需要其他文件(exec3)。我有一些文件不生成可执行文件(utils1,utils2),在我的整个项目中我使用外部库(mylib)。

现在我希望可执行文件放在bin文件夹中,生成的目标文件放在obj文件夹中,而.c和.h文件放在src文件夹中。执行src部分并不难,我只需要在exec1,...,exec3,utils1,utils2之前添加src/

但是我不知道如何重新定位.o和可执行文件,因为没有显式调用gcc(没有$(CC) $(CFLAGS) -c $(input) -o $(output)),我想保留它如果可能的话。

(作为一个附带问题,我应该在utils1.h/.c中保留src/ ...之类的文件,还是应该将它们放在特定的libapp文件夹中?)

0 个答案:

没有答案