使用makefile中的路径包含源文件

时间:2014-08-01 09:43:08

标签: c++ makefile include-path

我有一个名为MAKE的目录和两个子目录的源和标头。 source包含cpp文件,header包含一个头文件,该文件包含在所有三个cpp文件中。 我正在尝试创建一个make文件。 我试图从目录中访问源文件和头文件。我当前的目录是MAKE(我的make文件存在)。

我收到错误,因为没有规则来定位。停止 哪里出错了

    CC = g++
    INC_SOURCE = -I/home/abhiskekkumar/Desktop/VINEETH/Make/source/
    INC_DEST =  -I/home/abhiskekkumar/Desktop/VINEETH/Make/header
    SOURCE = $(shell echo *.cpp)
    HEADER = $(shell echo *.h)
    OBJECT = $(SOURCE:.cpp=.o)
    TARGET = output

    EXEC: $(TARGET)
            ./output
    $(TARGET): $(OBJECT)
            $(CC) $(INC_SOURCE) $(INC_DEST) -o $(TARGET) $(OBJECT)

2 个答案:

答案 0 :(得分:0)

第1步:我们编写了一个什么都不做的makefile,但做得不错。

nothing:
    @:

我们必须对此进行测试,并在我们继续之前将其完美运行。

第2步:我们会生成一个源文件列表,并将其打印出来,以便我们知道它是正确的。

SOURCE = $(wildcard source/*.cpp)
$(info $(SOURCE))

nothing:
    @:

我们必须对此进行测试,并在我们继续之前将其完美运行。

第3步:我们决定要将目标文件放在哪里(例如MAKE/MAKE/source/或其他地方。

试试这个,发表评论并结果,我们将继续。

答案 1 :(得分:0)

 CC = g++
 TARGET = vineeth

 CFLAGS   = -Wall

 LINKER   = g++ -o


SRCDIR   = source
HEADDIR  = header
OBJDIR   = obj
BINDIR   = bin

SOURCES  := $(wildcard $(SRCDIR)/*.cpp)
INCLUDES := $(wildcard $(HEADDIR)/*.h)
OBJECTS  := $(SOURCES:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o)


$(BINDIR)/$(TARGET): $(OBJECTS)
     $(LINKER) $@ $(LFLAGS) $(OBJECTS)
     @echo "Linking complete!"

$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp
     @$(CC) $(CFLAGS) -c $< -o $@
     @echo "Compiled "$<" successfully!"