繁体   English   中英

Linux-C ++ Makefile不使用包含路径

[英]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. 

请注意-I dir是预处理器的标志,而-Wall通常是C ++编译器的标志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM