我希望为小规模的C应用程序创建一个基本的makefile模板。在这种情况下,我不太关心性能而不是清晰度,并且想要重新编译所有内容 - 所有.h和.c文件以及第三方.so文件。
# Constants
#===============================================================================
# Specify the C complier
CC = gcc
# List the flags to pass to the compiler
# -ggdb Compile with debug information for gdb
# -Wall Give all diagnostic warnings
# -O0 Do NOT optimize generated code
# -m64 Generate code for a 64-bit environment
CFLAGS = -ggdb -Wall -O0 -m64
# Change the list of c source files into a list of object files by replacing
# the .c suffix with .o
OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))
# List libraries
# m Math library
LIBRARIES = -lm
# Specify the build target
TARGET = heyyou
# Rules
#===============================================================================
# $@ = left side of the colon, the target
$(TARGET) : $(OBJECTS)
@echo "Compiling $@..."
$(CC) -o $(TARGET) $(OBJECTS) $(CFLAGS) $(LIBRARIES)
答案 0 :(得分:2)
您可以在makefile中添加一个干净的函数,例如:
clean:
rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak
rm -rf *.lst *.map
在您的情况下,您还可以添加:
rm -rf $(OBJECTS)
然后,您只需在致电make clean
make
答案 1 :(得分:1)
如果您已经考虑到所有的重要性而正确地制作了Makefile,只需使用
即可make clean
如果您制作了正确的Makefile,则会自动处理所有依赖项,并且对于您在文件系统中所做的每项更改,您都不必执行" make clean"每次。一个简单的" make"就足够了 如果您还没有处理make中的所有依赖项,那么您会注意到源代码中的更改不会反映在二进制文件中。 因此,解决这个问题的一个简单方法是在Makefile中添加这些行
clean:
rm *.so
rm *.o
现在,对于每个编译,执行类似
的操作make clean
make
它不是处理Makefile的正确方法,但它在一些令人沮丧的情况下是一个救世主。
答案 2 :(得分:0)
您可以在make命令行中指定-B选项。
make -B