使用g ++和make编译和链接来自不同文件夹的许多源文件

时间:2014-01-27 19:54:13

标签: c++ gcc makefile g++

使用makefile编译和链接来自不同文件夹的多个.cpp文件到一个exacutable的正确方法是什么?

例如,我有以下文件结构:

./Foo/Wow/Bar/example1.cpp
./Foo/Bar/example2.cpp
./Foo/example3.cpp
./main.cpp

现在我想编译并将所有这些文件链接到一个可执行文件中。使用makefile执行此操作的正确方法是什么?

谢谢, S上。

1 个答案:

答案 0 :(得分:1)

没有一种正确的方法可以做到这一点。

一种可能性是将代码分成库,每个子目录一个。每个库都有自己的makefile。

然后项目根目录将有一个makefile,它以递归方式调用make以确保这些库都是最新的,然后使用这些库来构建主要的可执行文件。

其他人反对(有时是大声疾呼)整个概念。使用现有库(及其现有的makefile)可能是可以的,但是它们经常反对将子目录中的代码转换为库的基本思想,只是为了将单个结果文件链接到最终的可执行文件( OTOH,似乎很少有一个可靠的解释,为什么你将代码放入一个子目录开始,如果它没有体现一些逻辑概念,可能有资格作为一个有意义的库)。