简单的Makefile没有包含路径

时间:2013-04-12 07:21:14

标签: makefile

以下是我的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

1 个答案:

答案 0 :(得分:4)

您的$(TARGET): $(OBJECTS)规则告诉您如何从my_bridge.so生成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