据我所知,要在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
?另外,我经常看到cmake
与make
进行比较,而不是./configure
。那么,cmake
实际适合哪里?
答案 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包提供了一些帮助。