`

cmake与autoconf+automake的对比

阅读更多
  首先,拿他们对比本身没有太多的意义,他们都是产生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的配置工具供大家使用;
我们再看看他们配置文件的内容吧,这是我们的比较的重点,因为这是我们实际使用的关键步骤:

       autotoolscmake
变量定义name=...set(name, "...")
环境检测AC_INITfind_library(lib libname pathllist)
测试程序find_package(packename)
AC_PROG_CCfind_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=binnameadd_executable(binname ${sources})
binname_SOURCES=target_link_libraries(binname librarylist)
binname_LDADD=
binname_CFLAGS=
binname_LDFLAGS=
动态库lib_LIBRARIES=libname.soadd_library(libname shared ${source} )
libname_SOURCES=
静态库lib_LIBRARIES=libname.aadd_library(libname static ${source} )
libname_a_SOURCES=
头文件INCLUDES= include_HEADES= 或CFLAGS=-Iinclude_directories(list)
源码搜索aux_source_directories(. list)
依赖库 LIBS=target_link_libraries(binname librarylist)
LDADD=
标志CFLAGS=set(CMAKE_C_FLAGS  ...)
LDFLAGS=
libtoolAC_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_DISTinstall(FILES files.. )
install(DIRECTORY dirs..)
条件语句使用Make的条件语句if(my)
if()else(my)
endifendif(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
分享到:
评论

相关推荐

    自动生成MakeFile文件的几大工具

    开发步骤太多,配置繁琐 [ autoscan + autoconf + automake ]; 通常编译的./configure文件,大多通过由autotools构建的,最终生成Makefile和config.h文件 CMake: CMake是一个跨平台的安装(编译)工具 CMake类似...

    cmake practice.pdf

    KDE(K桌面环境)是一个著名的开源项目,最初使用autotools(autoconf和automake)作为其构建系统。然而,随着项目规模的扩大和需求的变化,KDE的开发者们发现autotools已无法满足KDE构建体系的需求,因为只有少数的...

    Professional CMake_ A Practical Guide

    《Professional CMake_ A Practical Guide》是一本由Craig Scott所著的关于CMake构建系统的实用指南书籍,旨在提供一个清晰、实用的学习路径来掌握CMake这一跨平台的构建工具。CMake被广泛应用于C++项目的构建过程...

    CMake实践教程.pdf

    文中也出现了cmake和autotools的对比,autotools通常指的是autoconf和automake,这两个工具经常与libtool一起使用,用于生成适合于各种Unix系统的Makefile。 文中提到了多个版本控制系统,包括SVN、CVS、Git等。...

    cmake presentation

    3. **易于调试**:与autoconf/automake相比,CMake更易于设置和调试。 4. **简单易用的语言**:提供一种简便的语言,使用户能相对轻松地为多个平台定制规则。 5. **适应单平台需求**:即便在单一平台上,CMake也能...

    cmake-3.17.2.tar.gz

    7. `configure`和`Makefile.in`等文件:这些是用于配置和构建CMake的自动工具(如autoconf和automake)的输入文件。 要构建和安装CMake,你需要遵循以下步骤: 1. 解压`cmake-3.17.2.tar.gz`。 2. 进入解压后的...

    cmake-overview

    #### CMake与传统构建工具的对比 相较于传统的构建工具,如Automake、autoconf、GNU make等,CMake具有以下优势: 1. **速度**:CMake在构建时间上的表现优于Automake,例如,KDE4项目使用CMake后,构建时间比使用...

    CMake使用教程.pdf

    - **易用性**:相比传统的Autoconf/Automake,CMake更加简单易学,降低了构建过程的复杂度。 #### 三、CMake基本概念 - **CMakeLists.txt**:每个项目的根目录及其子目录下都包含一个名为CMakeLists.txt的文本文件...

    buildroot 下目录dl 安装包

    buildroot 下部分安装包 acl attr autoconf autoconf automake freetype cmake gcc ghostscript busybox gmp python3 xz tiff qpdf pcre

    automaton-core:自动机源代码

    先决条件sudo apt-get install build-essential git curl cmake autotools-dev autoconf autogen automake libtool吉特卷曲CMake的g ++ 自动工具的libtool制作说明从自动机仓库中: cd srcmkdir buildcd buildcmake ...

    VAD语音活动检测库,linux下编译

    VAD,全称为Voice Activity Detection,是语音处理领域的一个关键技术,用于识别音频流中的语音片段与静音时段。在WebRTC(Web Real-Time Communication)框架中,VAD库扮演着重要角色,它可以帮助优化网络带宽使用...

    2001 CMake实践pdf.pdf

    KDE4是一个非常庞大且复杂的开源桌面环境项目,其开发者团队在长期使用autotools(如Autoconf、Automake)作为构建工具后,面临着一系列挑战。这些问题包括构建过程过于复杂、维护难度高以及缺乏足够的灵活性等。在...

    automake-1.13.3.tar.gz

    `automake`是GNU项目的一部分,它与autoconf一起工作,为C、C++、Objective-C、Fortran、Java等语言的项目自动生成符合POSIX或GNU Makefile标准的Makefile.in文件。这样,开发者可以专注于编写代码,而无需手动处理...

    cmake-2.8.4.tar.gz

    `automake`是GNU项目的一部分,通常与`autoconf`一起使用,它们在Unix-like系统上广泛使用,但学习曲线较陡峭。而`cmake`则在所有主流操作系统上都有良好的支持,包括Linux、macOS和Windows,它的配置文件(`...

    FFmpeg在ios平台编译方法

    - 准备环境:安装Xcode,获取必要的命令行工具,如cmake、autoconf、automake等。 - 下载FFmpeg和x264源码,放到相应目录。 - 配置FFmpeg:运行配置脚本,如`./configure --prefix=/path/to/output --enable-...

    如何自动生成makefile

    1. **Autoconf与Automake**: 这是GNU项目提供的一套工具,适用于多平台的软件构建。`autoconf` 生成配置脚本,帮助用户检测系统特性,而`automake` 生成符合GNU标准的 `Makefile.in`,在运行 `configure` 脚本后,会...

    centos傻瓜式安装nginx+php+mysql+memcache+mongodb

    安装Mysql需要先安装依赖库,包括bison、gcc、gcc-c++、autoconf、automake、zlib和libxml2等。使用以下命令安装依赖库: ``` yum -y install bison gcc gcc-c++ autoconf automake zlib libxml2 ``` 然后,下载和...

    CentOS6.8使用cmake安装MySQL5.7.18

    参照网上资料在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

    ffmpeg2.6 在ios下的静态库i386 x86_64 armv7 armv7s arm64架构

    1. **配置环境**:安装Xcode,设置好iOS开发环境,确保CMake、autoconf、automake等工具已安装。 2. **下载FFmpeg源码**:从FFmpeg官网获取2.6版本的源代码并解压。 3. **配置编译参数**:使用配置脚本(configure)...

Global site tag (gtag.js) - Google Analytics