首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >项目能同时支持Autotools和Cmake吗?

项目能同时支持Autotools和Cmake吗?
EN

Stack Overflow用户
提问于 2019-06-08 12:31:39
回答 1查看 312关注 0票数 2

我碰巧认为(但可能是一个神话),Cmake在轻松支持微软方面比Autotools更强大。

同时,我可以肯定,当涉及到重要的UNIX衍生工具(如macOS和最流行的Linux发行版)时,Autotools甚至比Cmake更简单。

如果我不能选择呢?

一个项目能否同时支持Autotools Cmake 同时支持

额外好处是:一个项目能否同时支持Autotools、、Cmake、,甚至都能同时支持Make

“同时”,我的意思是,理想情况下,当从一个构建系统转换到另一个构建系统时,不一定要运行干净的脚本。但我想如果有必要的话,这将是一种合理的配置。

最后,您知道一个同时使用Autotools和Cmake的示例项目吗?一个同时使用自动工具,Cmake和裸Make的人?

EN

回答 1

Stack Overflow用户

发布于 2019-06-08 13:49:54

是的,您可以很容易地同时支持CMake和Autotools,因为它们不重叠(也就是说,用于创建这些环境的文件是不同的,因此您可以在项目中同时拥有两种类型的文件)。这方面的一个例子是GNU uCommon C++框架

不,您不能(很容易)同时支持单独的make和上述任何一个系统。Autotools和CMake实际上都不是构建工具本身。它们是“构建工具生成器”。因此,您不运行autotools或cmake,结果是您构建的项目:而是运行autotools或cmake,它们为构建工具生成控制文件。然后运行构建工具,结果是构建的项目。

Autotools生成makefile,cmake生成许多不同类型的控制文件,makefile是其中最常见的文件之一。

因此,您不能在项目中拥有自己的makefile,因为它们将与autotools或cmake生成的makefile发生冲突。

当然,您可以将自己的makefile放在子目录中,然后使用make -f rawmake/makefile之类的参数调用make。但是没有方便的方法来支持他们。

实际上,我绝不会选择支持上述方案中的一个以上。您将花费大量的时间来正确处理它,而且每次您需要更改您的构建环境时,它的工作量是原来的两三倍。人们会发现任何一个问题,你倾向于使用较少。这是一个巨大的麻烦,没有那么多的好处。

你所选择的很大程度上取决于你的项目。如果您的项目只在POSIX类型的系统上运行(或者几乎完全在POSIX类型的系统上运行),那么即使它使用了许多特殊的操作系统功能,您也希望它能够最大限度地移植到更老的系统上,或者您希望它的安装和构建选项非常灵活(对交叉编译的直接支持,等等)。那么自动工具是个不错的选择。如果您的项目运行在许多不同的OS类型(特别是Windows)上,并且希望人们能够使用他们选择的IDE (Visual、Xcode等)进行开发。很容易,那么cmake是一个不错的选择。

如果您的程序构建简单,几乎不需要任何配置或定制,或者您已经熟悉makefile,并且不想只为构建学习一种全新的语言,那么原始makefiles可能是一个不错的选择。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56506388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档