Makefile中的編譯選項(xiàng)如何設(shè)置

小樊
94
2024-09-03 11:57:59

在Makefile中,編譯選項(xiàng)通常是通過設(shè)置變量來實(shí)現(xiàn)的

  1. 編譯器(CC):指定要使用的C或C++編譯器。例如,使用GNU C編譯器(gcc)和GNU C++編譯器(g++)分別設(shè)置為:
CC = gcc
CXX = g++
  1. CFLAGS:設(shè)置C編譯器的選項(xiàng)。例如,添加警告和調(diào)試信息:
CFLAGS = -Wall -g
  1. CXXFLAGS:設(shè)置C++編譯器的選項(xiàng)。例如,添加警告和調(diào)試信息:
CXXFLAGS = -Wall -g
  1. LDFLAGS:設(shè)置鏈接器的選項(xiàng)。例如,指定庫(kù)文件的搜索路徑:
LDFLAGS = -L/path/to/libraries
  1. LDLIBS:設(shè)置要鏈接的庫(kù)。例如,鏈接數(shù)學(xué)庫(kù)(-lm)和pthread庫(kù)(-lpthread):
LDLIBS = -lm -lpthread
  1. CPPFLAGS:設(shè)置C和C++預(yù)處理器的選項(xiàng)。例如,定義宏和包含頭文件的搜索路徑:
CPPFLAGS = -DDEBUG -I/path/to/headers

以下是一個(gè)簡(jiǎn)單的Makefile示例,展示了如何設(shè)置這些編譯選項(xiàng):

CC = gcc
CXX = g++
CFLAGS = -Wall -g
CXXFLAGS = -Wall -g
LDFLAGS = -L/path/to/libraries
LDLIBS = -lm -lpthread
CPPFLAGS = -DDEBUG -I/path/to/headers

TARGET = my_program
OBJECTS = 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)

這個(gè)Makefile定義了一個(gè)名為my_program的目標(biāo)程序,其中包含三個(gè)源文件(main.c、foo.c和bar.cpp)。它使用了上述提到的編譯選項(xiàng),并定義了一個(gè)clean目標(biāo)來刪除生成的文件。

0