Makefile在不同目录中构建源代码

时间:2016-02-18 16:04:32

标签: c++ makefile linker static-linking

我喜欢这个makefile的逐步说明

Could someone explain this make file?

作为回顾,它如下

CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
    $(CC) $(CFLAGS) $

有人可以解释如何修改它以适用于不同目录中的源文件吗?

例如,假设目录结构如下

/src/hello/
/src/hello/main.cpp
/src/hello/hello.cpp
/src/hello/factorial.cpp
/src/hello/makefile   [THIS makefile]
/src/util/util.h
/src/util/util.cpp

我需要在makefile中修改哪些内容才能让#include "uti.h"成为main.cpp

顺便说一下,我想我已经阅读了一些可以使用VPATH的地方。有人可以详细说明吗?

编辑 - 有人问我想要util.o去哪里。我认为合乎逻辑的下一个问题是 - 为什么不建立一个静态库?

我认为一旦我的项目完成,我将构建一个静态库。但是(如果我错了,请纠正我),但静态库只是一堆相关.o的存档。我不确定.o有什么关系。我想util.o吗?我想要math.o吗?我想要timeSeries.o吗?或者我想将它们作为单个.a?我不肯定。因此,在此期间,让我只看到所有个人.o并将main链接到他们身上。

0 个答案:

没有答案