【发布时间】:2012-10-11 17:36:54
【问题描述】:
我有一个 Linux GNU C 项目,它需要为两个不同的硬件设备构建输出,使用一个通用的 C 源代码库,但使用不同的 makefile。目前我在同一个文件夹中有两个makefile,每个设备一个,当我对代码进行更改时,我必须先“make clean”来制作第一个模型,然后“make clean”来制作第二个模型.这是因为它们使用不同的编译器和处理器。即使代码文件没有改变,我也必须为其他设备重新编译它。
我想做的是为第二个模型使用不同的文件夹,因此它存储了 *.d 和 *.o 文件的单独副本。我不必“清理”,只需重新编译更改的源。我已经研究过 makefile 语法,并且对 Linux 不熟悉,只能对这些东西的神秘本质摸不着头脑。
我正在考虑的一种方法是将 .c 和 .h 文件从 model_1 文件夹更新到 model_2 文件夹。谁能给我一个简单的 makefile,它只会将较新的 *.c 和 *.h 文件从一个文件夹复制到另一个文件夹?
或者,必须有一种方法来拥有一个公共源文件夹和单独的输出文件夹,这样就不需要重复的源文件。任何帮助实现这一目标表示赞赏。如果您想查看它们,我可以提供 makefile。
【问题讨论】:
-
显示你尝试过的
Makefile-s的相关规则。 -
如果您向我们展示您的目录结构和生成文件,这真的会有所帮助。否则,我们能做的最好的就是提供您可能难以实施的高级建议。
标签: c linux compilation makefile gnu