我碰巧认为(但可能是一个神话),Cmake在轻松支持微软方面比Autotools更强大。
同时,我可以肯定,当涉及到重要的UNIX衍生工具(如macOS和最流行的Linux发行版)时,Autotools甚至比Cmake更简单。
如果我不能选择呢?
一个项目能否同时支持Autotools 和 Cmake 同时支持
额外好处是:一个项目能否同时支持Autotools、和、Cmake、,甚至都能同时支持Make
“同时”,我的意思是,理想情况下,当从一个构建系统转换到另一个构建系统时,不一定要运行干净的脚本。但我想如果有必要的话,这将是一种合理的配置。
最后,您知道一个同时使用Autotools和Cmake的示例项目吗?一个同时使用自动工具,Cmake和裸Make的人?
发布于 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可能是一个不错的选择。
https://stackoverflow.com/questions/56506388
复制相似问题