c程序的简单生成文件
我有这个(工作)单文件C应用程序的Makefilec程序的简单生成文件,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$@$
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