3

以下は私のメイクファイルです。しかし、ビルド中にインクルードパスを取得していません。

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.somy_bridge.oますが、そもそも make の方法を説明するルールを指定していませんmy_bridge.omakeしたがって、そのための暗黙のルールに依存しており、これにより、表示されるコマンドが提供されます。.cppファイルをコンパイルする独自のルールを定義することもできます。

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

または、インクルード ディレクティブを に配置します。これは、のデフォルト ルール$(CXXFLAGS)で使用されます ( https://www.gnu.org/software/make/manual/html_node/Catalogue-of-Rules.html#Catalogue-of-Rulesを参照) 。make

于 2013-04-12T07:46:52.927 に答える