【发布时间】:2016-05-23 10:02:15
【问题描述】:
我创建了一个我最初认为很简单的项目(文件很少),但现在该项目正在增长。我正在尝试重新组织目录结构,但我不确定如何修改makefile。
这是我的结构:
root_dir
Makefile
main.cc
fileA.cc
fileA.h
fileB.cc
fileB.h
fileB 也依赖于 fileA (#include "fileA.h"),我的 Makefile 看起来像这样:
all: myExec
myExec: main.o fileA.o fileB.o
g++ -Wall main.o fileA.o fileB.o -o myExec
main.o: main.cc fileA.h fileB.h
g++ -Wall -c main.cc
fileA.o: fileA.cc fileA.h
g++ -Wall -c fileA.cc
fileB.o: fileB.cc fileB.h fileA.h
g++ -Wall -c fileB.cc
现在我想要这样的东西:
root_dir
Makefile
main.cc
dirA
fileA.cc
fileA.h
dirB
fileB.cc
fileB.h
我读到我可以在每个子目录中创建一个 Makefile,但我不确定这在此处是否可行,因为 fileB 依赖于 fileA(位于另一个子目录中)。
或者我应该修改我的主 Makefile 以包含 subdir 吗?
谢谢。
【问题讨论】:
-
你当前的 Makefile 是如何工作的?
-
你需要提供一个真实的例子,
fileB如何依赖于fileA?诸如此类的细节至关重要,你甚至没有说你在做什么,可执行文件?图书馆? -
我添加了 Makefile 描述。我提到了 fileB 包含 fileA (#include 'fileA.h')。我正在创建一个可执行文件。
-
不久前,我在西班牙语 SO 上遇到过类似的问题 answered。坦率地说,您不需要明确指定
.h-files 作为依赖项,因为 gcc 可以为您收集这些信息。检查答案(有一个不言而喻的Makefile),也许它对你有帮助。