我正在构建一个make文件,我希望它能够容忍我有多个main方法的事实,并且可能只考虑具有最高字母值的文件作为入口点。
有没有办法做到这一点或类似的东西?
有几种方法可以做到这一点,具体取决于您想要或需要做出该决定的级别。以下是我所知道的三个:
- 在实际构建内容之前,通过调用
$(shell find | grep)
或$(shell grep -R ...)
来识别仅要构建的文件(包含)或过滤掉不要构建的文件(排除),找出要构建的内容。 - 使用
objdump
分析目标文件并过滤掉除最后一个文件之外具有main()
功能的文件。您可以将$(shell sort ...)
用作帮助程序或$(sort ...)
。 - 如果您知道哪些对象可以包含
make
,并且您正在使用编译器/链接器组合,该组合允许可以隐藏弱声明,则可以在对象列表中使用$(sort)
,$(lastword)
获取具有"最高名称"的对象,并将其放在链接器文件列表中的第一个(或最后一个,具体取决于链接器解析的方式)。