使用Make构建C / C ++项目的“标准库”
||
有时,我需要我的项目使用简单的makefile,尽管它不推荐用于任何用途的过时的构建技术,但是由于make几乎在任何地方都可用,因此有时是有意义的。
但是我希望我的Makefile看起来像
Include \"../buildexec.mk\"
TARG = my_exec
CPPFILES = file1.cpp \\
file2.cpp \\
并在buildexec.mk中包含所有通用(且可怕的)依赖项跟踪代码。
是否有这样的“制作库”?
在Go中,可以包含一个标准的Makefile,并且Makefile看起来像这样漂亮:
include $(GOROOT)/src/Make.inc
TARG=irc
GOFILES=irc.go irc_struct.go irc_callback.go
include $(GOROOT)/src/Make.pkg
与C ++类似吗?
澄清:我知道tup,cmake和scons /我知道waf和bjam等/,但是我希望我的deps很小/这样编译完全没有问题。我专门要求获得支持,而不是寻求替代。
没有找到相关结果
已邀请:
5 个回复
蜗仓馈
奥李
黎喊病
生成文件:
但要提一个建议:不要过多地诅咒您的工具。您可能会用它的精力来学习如何使用它们,或者改用自己喜欢的。
莽缓逢
坛沤疲撑拆
确实有很多问题,但是它仍然是周围最可用的工具,一旦使其正常运行,您应该专注于开发。 在那之前,您将不得不编写makefile。但是,而不是寻找“ make库”,一个真正简单的解决方案(如果您实际上是用Make语言启动的)通常被认为太过明显而被忽略了,而是实现自己的解决方案。创建一个make脚本,其中包含一组与项目makefile进行通信的默认模式规则和变量,并将此脚本包含在每个项目的makefile中。这并不困难,可能会花费一些时间,但是通常会得到很好的回报,特别是如果您要管理许多小型项目。 我使用这样的设计。我有几个经过精心设计的GNU make脚本,它们提供了一种几乎琐碎的机制来创建相当复杂的构建系统:自动依赖项生成,不同语言的处理,语言解析器的生成,不同的构建配置(调试或发行),构建日志的生成,等等。而且脚本也不麻烦:当前版本仅包含约250行的makefile代码,不包括注释。 我将为您提供此类系统的较旧版本的样本,仅处理C源代码,其中包含一些功能。它应该处理二进制和库的编译(静态和动态)。它还应通过
变量帮助您跟踪项目间的依赖关系。 称此
:
“ 9”包含项目目录的路径(例如,存储库的工作副本),通常以环境变量的形式导出。您的项目中还将需要几个目录(
,
,
和
)。 使用此系统的示例Makefile可以是:
也就是说,您只需编写有关项目的最低要求,然后让构建系统完成其余工作。您总是可以显式指定给定变量的值(例如,
或
),但是如果不指定,则它将获得合理的默认值。 上面的代码是根据我的需求量身定制的,但是应该很容易适应您的需求,同时让事情像您提到的示例一样简单。