[英]linux - c++ makefile not using include path
我在运行我的makefile时遇到麻烦,它似乎没有使用我指定的include路径。 生成文件如下所示:
SHELL = /bin/sh
CC = g++
FLAGS = -std=c++0x
CFLAGS = -Wall -fPIC -g -I/include
LDFLAGS = -shared
TARGET = TNet.so
SOURCES = $(shell echo src/*.cpp)
HEADERS = $(shell echo include/*.h)
OBJECTS = $(SOURCES:.cpp=.o)
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(CC) $(FLAGS) $(CFLAGS) $(DEBUGFLAGS) -o $(TARGET) $(OBJECTS)
clean:
-rm *.o $(TARGET
我的目录树如下所示:
rootfolder
/ \
src include
有任何想法吗?
假设您的Makefile
实际上放置在rootfolder
下,并且这是编译器调用的工作目录,则需要指定include路径(不是绝对路径,而是相对路径)
CFLAGS = -Wall -fPIC -g -I./include
要么
CFLAGS = -Wall -fPIC -g -Iinclude
除非您的项目直接位于/
下,否则应在编译器标志中添加-Include
这个Makefile
对我Makefile
:
$ cat Makefile
CPPFLAGS = -Iinclude
CXXFLAGS = -Wall
foo: foo.cpp
$ make foo
g++ -Wall -I/include foo.cpp -o foo
它利用了已经定义的隐式规则 。 在您的情况下,要查找的标志是:
CPPFLAGS
Extra flags to give to the C preprocessor and programs that use it (the C and Fortran compilers).
CXXFLAGS
Extra flags to give to the C++ compiler.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.