簡體   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