C Makefile项目

C Makefile项目,c,makefile,embedded,autotools,C,Makefile,Embedded,Autotools,我想知道是否有一种方法可以从特定目录自动添加源文件,而无需将它们写入Makefile.am。因此,如果存在,我需要一个选项。谢谢你的帮助 我想知道是否有一种方法可以从特定目录自动添加源文件,而无需将它们写入Makefile.am 一些make实现,如GNU,具有实现这一目标的功能,但它没有可移植机制,自动工具都是关于可移植性的。因此,依靠这种机制将是糟糕的自动工具风格 即使您满意地忽略了可移植性的影响,这仍然是有限的,因为Makefile.am将源文件与它们所贡献的目标关联起来。您需要在所讨论的

我想知道是否有一种方法可以从特定目录自动添加源文件,而无需将它们写入Makefile.am。因此,如果存在,我需要一个选项。谢谢你的帮助

我想知道是否有一种方法可以从特定目录自动添加源文件,而无需将它们写入Makefile.am

一些
make
实现,如GNU,具有实现这一目标的功能,但它没有可移植机制,自动工具都是关于可移植性的。因此,依靠这种机制将是糟糕的自动工具风格

即使您满意地忽略了可移植性的影响,这仍然是有限的,因为
Makefile.am
将源文件与它们所贡献的目标关联起来。您需要在所讨论的源目录和目标目录之间存在直接链接,或者可能在更具体的文件名模式和目标之间存在直接链接。有时这种联系是存在的,但有时却不存在

撇开可移植性问题不谈,我一般不太喜欢这种东西,因为它会设下一个陷阱。例如,如果采用这种机制,那么在不破坏构建的情况下添加源文件是很困难的。在对现有项目进行自动工具化时,添加所有源代码名的一次性成本并没有那么高——我已经为几个大型项目这样做了——而在添加源代码时维护
Makefile.am
的成本也很低

但是,如果你仍然想要沿着这些路线,那么我建议使用一个源生成器。可能是这样的:

Makefile.am

bin_PROGRAMS = myprog
include myprog_sources.am
生成myprog\u sources.sh

bin_PROGRAMS = myprog
include myprog_sources.am
#/bin/bash
myprog_sources=(src/myprog/*.c)
echo“myprog_SOURCES=${myprog_SOURCES[*]}”>myprog_SOURCES.am
它使用单独的shell脚本为指定目录(即,
src/myprog
)中命名所有
.c
文件的
\u源定义生成自动生成代码。为了简单和安全起见,它被写入自己的文件
myprog_sources.am
,而
Makefile.am
文件使用Automake
include
指令将其合并。如果要为不同的源文件补集调整生成,请运行脚本。您还可以通过手动更新源列表来临时更改源列表,而无需运行脚本


这并不是您要求的免提自动化水平,但它仍然相当自动化,更适合您使用的工具。

取决于编译器/链接器。虽然制作文件已经成为过去,但还是让你最喜欢的现代IDE来处理吧。这能回答你的问题吗?这能回答你的问题吗?