c程序的简单生成文件

c程序的简单生成文件,c,makefile,C,Makefile,我有这个(工作)单文件C应用程序的Makefile all: simpleua simpleua: simpleua.c $(CC) -o $@ $< `pkg-config --cflags --libs libpjproject` all:simpleua simpleua:simpleua.c $(CC)-o$@$

我有这个(工作)单文件C应用程序的Makefile

all: simpleua

simpleua: simpleua.c
    $(CC) -o $@ $< `pkg-config --cflags --libs libpjproject`
all:simpleua
simpleua:simpleua.c
$(CC)-o$@$<`pkg config--cflags--libs libpjproject`
现在我想为多文件C应用程序扩展这个Makefile。 这些文件是main.csimpleua.csimpleua.h

我在互联网上找到了一些示例,但并不简单,并且使用pkg config

非常感谢
florian

这可能需要几次迭代(而且您遗漏了很多细节)。试试这个:

all: simpleua

simpleua: simpleua.o main.o
    $(CC) -o $@ $^ `pkg-config --cflags --libs libpjproject`

simpleua.o main.o: %.o: %.c simpleua.h
    $(CC) -c -o $@ $< `pkg-config --cflags --libs libproject`
all:simpleua
辛普鲁阿:辛普鲁阿,主啊,主啊
$(CC)-o$@$^`pkg配置--cflags--libs libpjproject`
simpleua.o main.o:%.o:%.c simpleua.h
$(CC)-c-o$@$<`pkg config--cflags--libs libs libproject`

编辑:第二次尝试(感谢Jonathan Leffler)。在模式规则中使用
--libs
可能是不必要的,但是试试看。

这是一个简单的示例
Makefile

CC = gcc
XX = g++
CFLAGS = -g

INC := -I test.h

$(LIBS)

TGT = ./sample
OUTPUT = ../output/

%.o: %.c    
    $(CC) $(CFLAGS) -c $< -o $@


SOURCES = $(wildcard *.c *.cpp)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES)))

$(TGT) : $(OBJS)
    $(CC) $(OBJS) -o $(TGT)    
    chmod 777 $(TGT)
    cp $(TGT) $(OUTPUT)

clean:
    rm -rf *.o *~ $(OUTPUT)/* 

在示例目录中,“我的所有源代码”驻留在输出文件夹中,“我的最终二进制文件”已复制(您可以根据需要为目录指定任何名称,但请确保在
Makefile
中也指定相同的名称)。因此,您可以将尽可能多的源文件放在示例目录中,并能够对其进行编译。

您可以在
手册中找到有关使用
通配符的部分,使
变得有用。或者,您可以使用。有关更多信息,请参阅此。感谢您的回复!但是我在Makefile中发现了很多“未定义引用”错误,至少在链接行中需要
pkg config--libs libpjproject
;可以说,您不应该在创建对象文件的行中包含
--libs
。@JonathanLeffler:谢谢,我不熟悉pkg配置,只看在线文档;我来编辑。(我说可能需要几次迭代。)
1)sample 

2)output