调用CMake相当于./configure步骤?

时间:2017-08-14 17:47:46

标签: configuration cmake

据我所知,要在Unix系统中从源代码编译和安装某些东西,所涉及的三个步骤是:

1)./configure

2)make

3)make install

当我检查OpenCV from source的安装时,我注意到它没有./configure步骤,但它有一个cmake步骤。这让我觉得cmake相当于./configure。我还读到cmake可以生成Makefiles等构建系统,这是./configure步骤所做的。

但是,article(请参阅what is the difference?的第一段)说cmake也执行实际构建。如果是这种情况,为什么在make之后OpenCV安装会指示cmake?另外,我经常看到cmakemake进行比较,而不是./configure。那么,cmake实际适合哪里?

3 个答案:

答案 0 :(得分:3)

是的,cmake就像是autotools的配置步骤。它不会执行构建本身,而只是生成构建所需的文件(Makefile,Visual Studio项目等)。

CMake有--build选项,但此选项只调用底层构建系统,因此您不能将CMake用作独立构建工具。这与普通的Makefile不同,因为您可以手动编写它们,然后make它们。

答案 1 :(得分:1)

你提到的文章比较了CMake和Make,这令人困惑。我伤害了像Make或msbuild这样的构建工具,并构建生成器或元构建工具,为生成工具生成文件,如CMake或Autotools。两者的工具可以合并为一个,就像Waf一样。

你是对的,经典的配置脚本与CMake调用具有相同的功能:它将搜索第三方库,设置构建系统并准备config header

除了GNU项目,CMake获得了相当大的动力。 KDE和Blender是使用CMake的大型项目。 LLVM在过去两年中发生了变化,甚至Boost也宣布它会改变。

答案 2 :(得分:1)

作为获胜者回答的附录:

CMake也可以用作pkg-config来搜索已安装的CMake启用包;-) Check the docs关于此模式。

CMake还支持CLI mode,并且能够以跨平台的方式处理文件系统操作,因此可以被视为&#34;微小/平凡的跨平台脚​​本编写工具&#34; < / em> ;-) - 我很高兴这种模式,因为我不需要学习Windows cmd.exe命令来进行文件/目录复制/移动/重命名/&amp;等等和我的脚本&#34;在Linux和Windows中运行良好......

也可以在server mode中使用它,但此功能主要专用于IDE,以集成对CMake文件编辑的适当支持。

比较w / autotools,开箱即用只支持普通档案(tarball),CMake(+ CPack)可以做各种包格式作为构建结果。我将它用于RPM / DEB / MSI / EXE,并为创建NuGet包提供了一些帮助。