3

以下是我的makefile。但它在构建过程中没有采用包含路径。

SHELL   = /bin/sh
CC      = g++ 
FLAGS   = 
CFLAGS  = -fPIC 
TARGET  = my_bridge.so
INC=-I/my_custom_path/include/ -I/my_custom_path/include/linux

SOURCES = $(shell echo *.cpp)
HEADERS = $(shell echo *.h)
OBJECTS = $(SOURCES:.cpp=.o)

all: $(TARGET)

$(TARGET): $(OBJECTS)
    $(CC) $(FLAGS) $(INC) $(CFLAGS) -o $(TARGET) $(OBJECTS)

当我构建时,我得到以下行

g++    -c -o my_bridge.o my_bridge.cpp
4

1 回答 1

4

您的$(TARGET): $(OBJECTS)规则告诉 make 如何生成my_bridge.soout of my_bridge.o,但您没有给出解释如何首先制作的规则my_bridge.omake因此,它依赖于它的隐含规则,它为您提供了您所看到的命令。您可以定义自己的规则来编译.cpp文件,例如

%.o: %.cpp
        $(CC) $(FLAGS) $(INC) $(CFLAGS) -o $@ $<

或将您的 include 指令放入 中$(CXXFLAGS),该指令由make的默认规则使用(请参阅https://www.gnu.org/software/make/manual/html_node/Catalogue-of-Rules.html#Catalogue-of-Rules

于 2013-04-12T07:46:52.927 回答