一个项目可以同时支持Autotools和Cmake吗?

时间:2019-06-08 12:31:39

标签: makefile cmake autotools release-management os-agnostic

我碰巧(但也许是个神话)在轻松支持Microsoft方面,Cmake比Autotools更重要。

同时,我可以肯定,在涉及重要的 UNIX派生类(例如macOS和最流行的Linux发行版)时,Autotools比Cmake更简单。

如果我不能选择怎么办?

项目可以同时支持自动工具 Cmake 吗?

为以下项目带来的好处:项目可以同时支持自动制作工具 Cmake 甚至吗?

“同时”是指,从尝试使用一种构建系统更改为另一种构建系统时,理想情况下,不必运行干净的脚本。但是我认为,如果需要的话,这将是一个合理的配置。

最后,您知道同时使用Autotools和Cmake的示例项目吗?一种同时使用Autotools,Cmake和仅使用Make的工具?

1 个答案:

答案 0 :(得分:2)

是的,您可以同时轻松地同时支持CMake和Autotools,因为它们不会重叠(也就是说,用于创建这些环境的文件是不同的,因此您可以在文件中同时拥有两种类型的文件)项目)。

不,您不能(轻松)同时支持裸机和以上任何一个系统。 Autotools和CMake本身都不是构建工具。他们是“构建工具生成器”。因此,您不必运行autotools或cmake,而结果是生成的项目:而是运行autotools或cmake,它们将为生成工具生成控制文件。然后运行构建工具,结果就是构建的项目。

自动工具生成makefile,而cmake生成许多不同类型的控制文件,其中makefile是最常见的控制文​​件之一。

因此,您不能在项目中拥有OWN生成文件,因为它们会与自动工具或cmake生成的生成文件冲突。

当然,您可以执行以下操作:将自己的makefile放在子目录中,然后使用诸如make -f rawmake/makefile之类的参数调用make。但是没有一种方便的方法来支持它们。

实际上,我永远不会选择支持以上选项之一。您将花费大量时间来纠正错误,每次需要更改构建环境时,它的工作量将是原来的两倍或三倍。人们会发现与您更不经常使用的其中一个问题有关。没有那么多好处,这是一个巨大的麻烦。

您选择哪种取决于您的项目。如果您的项目仅(或几乎仅)在POSIX类型的系统上运行,即使您使用了许多特殊的OS功能,您还是希望它可以最大程度地移植到更旧的系统上,或者您希望它的安装和构建选项非常多灵活(直接支持交叉编译等),那么自动工具是一个不错的选择。如果您的项目运行在许多不同的OS类型(尤其是Windows)上,并且您希望人们能够轻松选择IDE(Visual Studio,Xcode等)进行开发,那么cmake是一个不错的选择。

如果您的程序易于构建,并且几乎不需要任何配置或自定义,或者您已经熟悉makefile,并且不想学习仅用于构建的全新语言,那么原始makefile可能是一个不错的选择。 / p>