我有这个文件夹/文件结构:
./libs/
helpers.c
helpers.h
./a_app.c
./b_app.c
./c_app.c
每个应用程序都依赖于 helpers lib 和GStreamer
,所以我需要编译helpers.o
(在libs/
文件夹内)然后链接每个应用程序。
目前我有这个Makefile:
CC = gcc
CFLAGS = -g -Wall -w
LFLAGS = -g -Wall -w -c
CFLAGS += `pkg-config --cflags gstreamer-app-0.10`
LFLAGS += `pkg-config --cflags gstreamer-app-0.10`
LDFLAGS =
LDFLAGS += `pkg-config --libs gstreamer-app-0.10`
all: examples
examples: helpers.o a_app
$(info *** examples ***)
helpers.o:
$(info *** helpers.o ***)
$(CC) $(LFLAGS) libs/helpers.c -o libs/helpers.o $(LDFLAGS)
a_app: a_app.o
$(CC) $(CFLAGS) libs/helpers.o a_app.o -o a_app $(LDFLAGS)
a_app.o: a_app.c
$(info *** a_app.o ***)
$(CC) $(LFLAGS) a_app.c $(LDFLAGS)
虽然我可以添加b_app
并且c_app
我正在寻找另一种(更优雅)的方式。我不能只说我有 a、b 和 c _app 并让 Makefile 将它们全部编译并将它们与 GStreamer 和助手链接吗?
此外,有没有什么方法可以让 Makefile 编译文件而不需要告诉它-o name_of_file
(并且可能让它在它们所在的文件夹中编译它们,因为有帮助程序库)。