【发布时间】:2011-04-04 02:21:51
【问题描述】:
对于一个学校项目,我需要创建一个编译子目录而不使用任何其他 Makefile 的 Makefile。我的意思是我不能这样做:
make -C <sub-folder>
如下所示:
在本地:
./Makefile
./sub
./sub2
并且在子目录中:
./sub/file1.c
./sub/file2.c
./sub/file3.c
./sub/file4.c
./sub2/file1.c
./sub2/file2.c
./sub2/file3.c
./sub2/file4.c
这是我到目前为止所做的,但我不断收到错误:
CC = gcc -W -Wall -Werror
NAME = test
NAME2 = test2
SRCS = sub/file1.c \
sub/file2.c \
sub/file3.c \
sub/file4.c
SRCS2 = sub2/file1.c \
sub2/file2.c \
sub2/file3.c \
sub2/file4.c
OBJS = $(SRCS:.c=.o)
OBJS2 = $(SRCS2:.c=.o)
all:
$(OBJS)
$(CC) $(OBJS) -o $(NAME)
$(OBJS2)
$(CC) $(OBJS2) -o $(NAME2)
谢谢你,艾菲斯门。
[EDIT] 编辑了我的问题 我的问题有点改变。我需要在同一个 Makefile 中编译,总是使用相同的规则,两个不同的二进制文件。我尝试遵循对一个人有用的方法,但对两个人似乎并不合适。如果您有任何建议,请告诉我。
发布的代码有效,但只编译第一个二进制文件。
【问题讨论】:
-
只是想一想:
SRCS = sub/file1.c sub/file2.c ...并从目标中删除cds -
谢谢你成功了!但是我现在有第二个问题,我无法在不使用其他 makefile 的情况下同时编译两个二进制文件。