【发布时间】:2017-02-07 06:50:20
【问题描述】:
1. cmake 是来自 CMake 软件的命令:准备构建自动化系统; make 和 make install 是来自 Make 软件的命令:构建自动化系统。
2.通过阅读此post,我的理解是:
a. 这个“cmake and make”的东西实际上在其实现中使用了 g++ / gcc。 cmake 和 make stuff 基本上只是使用 g++ / gcc 的工具。对吗?
b. gcc / g++ 是执行实际工作的编译器。
c.所以我可以直接使用gcc / g++而不使用make和CMake的东西吗?
3. 根据这个 stackoverflow answer:CMake 获取一个 CMakeList.txt 文件,并将其输出为特定于平台的构建格式,例如 Makefile、Visual Studio 等。
但是当我遇到this openCV 安装时:
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
它在没有 CMakeLists.txt 文件的目录中执行 cmake 命令。你能解释一下吗?
4. 我见过的常用步骤是:cmake、make、sudo make install。
我读了这个stackoverflow post,我的理解是:
(i) make 用于构建项目。
(ii) make install 是将二进制/可执行文件复制到安装目录。
a.那么当我们make时,结果/二进制文件/可执行文件存储在哪里?
b.如果我们只运行make而不运行make install,是否意味着文件没有生成?
c. 我在将 openCV 与 GCC 和 CMake 结合使用时遇到了这个 openCV tutorial。它使用:
cd <DisplayImage_directory>
cmake .
make
为什么make install 也不行?
5.总结:
CMake 采用 CMakeList.txt 文件(跨平台)生成 Makefile(特定于平台)。
我可以手动编写 Makefile 并跳过 CMake 步骤。但最好还是使用 CMake 步骤,因为它是跨平台的,否则如果我更改平台,我必须再次重写 Makefile。
Make 将 Makefile(由 CMake 生成或手动编写)作为编译和构建的指南。 Make 在其工作中基本上使用 gcc / g++ 或其他编译器。 Make本身只是编译器的一个工具。
Make install 将结果/可执行文件放入安装路径
【问题讨论】:
-
How is CMake used?的可能重复