在Makefile中,编译选项通常是通过设置变量来实现的
编译器(CC):指定要使用的C或C++编译器。例如,使用GNU C编译器(gcc)和GNU C++编译器(g++)分别设置为:CC = gccCXX = g++CFLAGS:设置C编译器的选项。例如,添加警告和调试信息:CFLAGS = -Wall -gCXXFLAGS:设置C++编译器的选项。例如,添加警告和调试信息:CXXFLAGS = -Wall -gLDFLAGS:设置链接器的选项。例如,指定库文件的搜索路径:LDFLAGS = -L/path/to/librariesLDLIBS:设置要链接的库。例如,链接数学库(-lm)和pthread库(-lpthread):LDLIBS = -lm -lpthreadCPPFLAGS:设置C和C++预处理器的选项。例如,定义宏和包含头文件的搜索路径:CPPFLAGS = -DDEBUG -I/path/to/headers以下是一个简单的Makefile示例,展示了如何设置这些编译选项:
CC = gccCXX = g++CFLAGS = -Wall -gCXXFLAGS = -Wall -gLDFLAGS = -L/path/to/librariesLDLIBS = -lm -lpthreadCPPFLAGS = -DDEBUG -I/path/to/headersTARGET = my_programOBJECTS = main.o foo.o bar.o$(TARGET): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o $(TARGET) $(LDLIBS)%.o: %.c $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@%.o: %.cpp $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@clean: rm -f $(TARGET) $(OBJECTS)这个Makefile定义了一个名为my_program的目标程序,其中包含三个源文件(main.c、foo.c和bar.cpp)。它使用了上述提到的编译选项,并定义了一个clean目标来删除生成的文件。


