首先,拿他们对比本身没有太多的意义,他们都是产生makefile文件的工具。cmake产生的晚,解决了很多autotools工具的问题。autotools是一个工具集具有强大的灵活性,但是因为步骤太多,配置繁琐,产生了很多的替代方案,cmake是其中最优秀的之一。当然很多其他替代品不会产生makefile文件而直接具有make的功能了。看到下图,你是不是感觉有些发晕。
不过还好,它是“八股文”,所有的步骤都是如此。
运行autoscan命令
将configure.scan 文件重命名为configure.in,并修改configure.in文件
在project目录下新建Makefile.am文件,并在core和shell目录下也新建makefile.am文件
在project目录下新建NEWS、 README、 ChangeLog 、AUTHORS文件
将/usr/share/automake-1.X/目录下的depcomp和complie文件拷贝到本目录下
运行aclocal命令
运行autoconf命令
运行automake -a命令
运行./confiugre脚本
我们再看看cmake的步骤:
编写CMakeLists.txt
运行cmake命令
9比2,当然不是比分是步骤。
那我们再来看一下他们的主要工作,他们的配置文件吧:
atuoconfig的配置文件configure.ac我们通过autosan生成,我们只需要修改就可以、autoconfig的配置文件Makefile.am我们需要自己手工从头编写;
cmake的配置文件CMakeLists.txt需要手工编写,当然cmake提供了gui的配置工具供大家使用;
我们再看看他们配置文件的内容吧,这是我们的比较的重点,因为这是我们实际使用的关键步骤:
| autotools | cmake |
变量定义 | name=... | set(name, "...") |
环境检测 | AC_INIT | find_library(lib libname pathllist) |
| 测试程序 | find_package(packename) |
| AC_PROG_CC | find_path(var name pathlist) |
| 测试函数库 | find_program(var name pathlist) |
| AC_CHECK_LIB([pthread],[pthread_rwlock_init]) |
| AC_PROG_RANLIB |
| 测试头文件 |
| 测试类型定义 |
| 测试结构 |
| 测试编译器特性 |
| 测试库函数 |
| 测试系统调用 |
| AC_OUTPUT |
子目录 | SUBDIRS= | add_subdirectory(list) |
可执行文件 | bin_PROGRAMS=binname | add_executable(binname ${sources}) |
| binname_SOURCES= | target_link_libraries(binname librarylist) |
| binname_LDADD= |
| binname_CFLAGS= |
| binname_LDFLAGS= |
动态库 | lib_LIBRARIES=libname.so | add_library(libname shared ${source} ) |
| libname_SOURCES= |
静态库 | lib_LIBRARIES=libname.a | add_library(libname static ${source} ) |
| libname_a_SOURCES= |
头文件 | INCLUDES= include_HEADES= 或CFLAGS=-I | include_directories(list) |
源码搜索 | | aux_source_directories(. list) |
依赖库 | LIBS= | target_link_libraries(binname librarylist) |
| LDADD= |
标志 | CFLAGS= | set(CMAKE_C_FLAGS ...) |
| LDFLAGS= | |
libtool | AC_PROG_LIBTOOL |
| lib_LTLIBRARIES=name.la |
| name_la_SOURCES= |
安装设置 | | install(TARGETS targets...[[ARCHIVE LIBRARY RUNTIME][DESTINATION < dir >][PERMISSIONS permissions...][CONFIGURATIONS[Debug Release ...]][COMPONENT < component >][OPTIONAL]] [...]) |
其他文件 | EXTRA_DIST | install(FILES files.. ) |
| | install(DIRECTORY dirs..) |
条件语句 | 使用Make的条件语句 | if(my) |
| if() | else(my) |
| endif | endif(my) |
| | while(condition) endwhile(condition) |
执行外部命令 | | exec_program(commd ) |
子模块 | | include() |
信息输出 | | messge(STATUS "messge") |
项目 | | project(name) |
我知道的就这些,大家可以帮忙指正补充。cmake相比autotool确实好用,包括KDE在内的很多大型项目也都在使用cmake。不过autotools的使用率仍旧比cmake要高。
原文:
http://blog.csdn.net/cnsword/article/details/7542696
- 大小: 7.8 KB
分享到:
相关推荐
开发步骤太多,配置繁琐 [ autoscan + autoconf + automake ]; 通常编译的./configure文件,大多通过由autotools构建的,最终生成Makefile和config.h文件 CMake: CMake是一个跨平台的安装(编译)工具 CMake类似...
KDE(K桌面环境)是一个著名的开源项目,最初使用autotools(autoconf和automake)作为其构建系统。然而,随着项目规模的扩大和需求的变化,KDE的开发者们发现autotools已无法满足KDE构建体系的需求,因为只有少数的...
《Professional CMake_ A Practical Guide》是一本由Craig Scott所著的关于CMake构建系统的实用指南书籍,旨在提供一个清晰、实用的学习路径来掌握CMake这一跨平台的构建工具。CMake被广泛应用于C++项目的构建过程...
文中也出现了cmake和autotools的对比,autotools通常指的是autoconf和automake,这两个工具经常与libtool一起使用,用于生成适合于各种Unix系统的Makefile。 文中提到了多个版本控制系统,包括SVN、CVS、Git等。...
3. **易于调试**:与autoconf/automake相比,CMake更易于设置和调试。 4. **简单易用的语言**:提供一种简便的语言,使用户能相对轻松地为多个平台定制规则。 5. **适应单平台需求**:即便在单一平台上,CMake也能...
7. `configure`和`Makefile.in`等文件:这些是用于配置和构建CMake的自动工具(如autoconf和automake)的输入文件。 要构建和安装CMake,你需要遵循以下步骤: 1. 解压`cmake-3.17.2.tar.gz`。 2. 进入解压后的...
#### CMake与传统构建工具的对比 相较于传统的构建工具,如Automake、autoconf、GNU make等,CMake具有以下优势: 1. **速度**:CMake在构建时间上的表现优于Automake,例如,KDE4项目使用CMake后,构建时间比使用...
- **易用性**:相比传统的Autoconf/Automake,CMake更加简单易学,降低了构建过程的复杂度。 #### 三、CMake基本概念 - **CMakeLists.txt**:每个项目的根目录及其子目录下都包含一个名为CMakeLists.txt的文本文件...
buildroot 下部分安装包 acl attr autoconf autoconf automake freetype cmake gcc ghostscript busybox gmp python3 xz tiff qpdf pcre
先决条件sudo apt-get install build-essential git curl cmake autotools-dev autoconf autogen automake libtool吉特卷曲CMake的g ++ 自动工具的libtool制作说明从自动机仓库中: cd srcmkdir buildcd buildcmake ...
VAD,全称为Voice Activity Detection,是语音处理领域的一个关键技术,用于识别音频流中的语音片段与静音时段。在WebRTC(Web Real-Time Communication)框架中,VAD库扮演着重要角色,它可以帮助优化网络带宽使用...
KDE4是一个非常庞大且复杂的开源桌面环境项目,其开发者团队在长期使用autotools(如Autoconf、Automake)作为构建工具后,面临着一系列挑战。这些问题包括构建过程过于复杂、维护难度高以及缺乏足够的灵活性等。在...
`automake`是GNU项目的一部分,它与autoconf一起工作,为C、C++、Objective-C、Fortran、Java等语言的项目自动生成符合POSIX或GNU Makefile标准的Makefile.in文件。这样,开发者可以专注于编写代码,而无需手动处理...
`automake`是GNU项目的一部分,通常与`autoconf`一起使用,它们在Unix-like系统上广泛使用,但学习曲线较陡峭。而`cmake`则在所有主流操作系统上都有良好的支持,包括Linux、macOS和Windows,它的配置文件(`...
- 准备环境:安装Xcode,获取必要的命令行工具,如cmake、autoconf、automake等。 - 下载FFmpeg和x264源码,放到相应目录。 - 配置FFmpeg:运行配置脚本,如`./configure --prefix=/path/to/output --enable-...
1. **Autoconf与Automake**: 这是GNU项目提供的一套工具,适用于多平台的软件构建。`autoconf` 生成配置脚本,帮助用户检测系统特性,而`automake` 生成符合GNU标准的 `Makefile.in`,在运行 `configure` 脚本后,会...
安装Mysql需要先安装依赖库,包括bison、gcc、gcc-c++、autoconf、automake、zlib和libxml2等。使用以下命令安装依赖库: ``` yum -y install bison gcc gcc-c++ autoconf automake zlib libxml2 ``` 然后,下载和...
参照网上资料在CentOS6.8...yum -y install gcc gcc-c++ gcc-g77 make cmake bison ncurses-devel autoconf automake zlib* fiex* libxml* libmcrypt* libtool-ltdl-devel* libaio libaio-devel bzr libtool ncurs
1. **配置环境**:安装Xcode,设置好iOS开发环境,确保CMake、autoconf、automake等工具已安装。 2. **下载FFmpeg源码**:从FFmpeg官网获取2.6版本的源代码并解压。 3. **配置编译参数**:使用配置脚本(configure)...