Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 我为什么要做。。做什么?_Bash_Unix_Makefile_Cmake - Fatal编程技术网

Bash 我为什么要做。。做什么?

Bash 我为什么要做。。做什么?,bash,unix,makefile,cmake,Bash,Unix,Makefile,Cmake,我正试图在AmazonLinux2发行版上安装一些程序,出于某种原因,我不得不从源代码处编译一些工具 我的理解是,我应该: cd my_source_code ./configure make make install 其目的是: ./configure将检查我是否拥有所需的所有工具 make:将源文件编译成二进制文件,然后使用 makeinstall:将所述二进制文件放置在可访问的位置 所有这些工具都要求我做不同的事情,例如: ./bootstrap make make install

我正试图在AmazonLinux2发行版上安装一些程序,出于某种原因,我不得不从源代码处编译一些工具

我的理解是,我应该:

cd my_source_code
./configure
make
make install
其目的是:

  • ./configure将检查我是否拥有所需的所有工具
  • make:将源文件编译成二进制文件,然后使用
  • makeinstall:将所述二进制文件放置在可访问的位置
所有这些工具都要求我做不同的事情,例如:

./bootstrap
make
make install

我猜
/boostrap
只是
/configure
脚本的另一个名称。是这样吗

对于cmake,为什么我必须同时做cmake和make?他们不一样吗


我对所有这些可能性都有点不知所措。

是的,
cmake。
是一个配置步骤,对应于Autotools中的
/configure
。运行此命令后,您将获得所请求的任何生成文件-
Makefile
s各种类型、Visual Studio项目等

之后,您需要实际构建它们。如果是
Makefile
s,则运行
make
,如果是Visual Studio,则在IDE中打开它并单击“构建”(或者运行
msbuild
,如果需要控制台)

CMake有
--build
标志来自动调用底层构建系统,所以您也可以这样做

# configure
cmake .
# build
cmake --build .

CMake
相当于运行
/configure
,但是
autoconf
automake
组合成一个程序。生成生成生成文件的是
automake
CMake
在Windows上启动,不仅可以生成Unix
Makefiles
,还可以生成
Visual Studio
项目和一些其他目标

Make的级别非常低,不直接支持遍历目录结构的递归构建
CMake
Automake
是生成文件生成器,它们提供了更高级别的抽象,并提供了创建递归构建的机制


/bootstrap
通常有创建
配置
脚本的步骤,该脚本通常不在git repo中,因为它是生成的。创建源tarball时,为了方便起见,将包含
配置
脚本。

这一个要求您使用
cmake编译的是什么。
?cmake编写配置脚本,然后为项目生成Make文件cmake如何知道默认生成系统?有没有办法让我检查一下我的默认构建系统是什么?(除了根据操作系统进行有根据的猜测之外)我假设在同一个操作系统上有可能有不同的构建系统,这是真的吗?对于类似Unix的操作系统,默认值总是“makefile”。对于windows,它默认为
NMake Makefiles
,IIRC。如果您有多个构建系统,例如Make和Ninja,该怎么办?CMake默认使用操作系统附带的构建系统吗?正如我所说的,默认是makefiles,不管安装了其他构建系统。对。我明白了。我的问题是,CMake是基于操作系统进行猜测,还是使用某种系统化的方法来查询默认构建系统。来自CMake文档:“CMake--build命令行将启动底层构建系统工具”,但它没有说明如何确定底层构建系统工具(并且它没有说它始终是makefiles)。
cmake .
make
make install
# configure
cmake .
# build
cmake --build .