Bash 我为什么要做。。做什么?
我正试图在AmazonLinux2发行版上安装一些程序,出于某种原因,我不得不从源代码处编译一些工具 我的理解是,我应该: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
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上启动,不仅可以生成UnixMakefiles
,还可以生成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 .