首先,拿他们对比本身没有太多的意义,他们都是产生makefile文件的工具。cmake产生的晚,解决了很多autotools工具的问题。autotools是一个工具集具有强大的灵活性,但是因为步骤太多,配置繁琐,产生了很多的替代方案,cmake是其中最优秀的之一。当然很多其他替代品不会产生makefile文件而直接具有make的功能了。看到下图,你是不是感觉有些发晕。
![](http://my.csdn.net/uploads/201205/07/1336377434_4326.gif)
不过还好,它是“八股文”,所有的步骤都是如此。
-
运行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
测试程序
AC_PROG_CC
测试函数库
AC_CHECK_LIB([pthread], [pthread_rwlock_init])
AC_PROG_RANLIB
测试头文件
测试类型定义
测试结构
测试编译器特性
测试库函数
测试系统调用
AC_OUTPUT |
find_library(lib libname pathllist)
find_package(packename)
find_path(var name pathlist)
find_program(var name pathlist) |
子目录 |
SUBDIRS= |
add_subdirectory(list) |
可执行文件 |
bin_PROGRAMS=binname
binname_SOURCES=
binname_LDADD=
binname_CFLAGS=
binname_LDFLAGS= |
add_executable(binname ${sources})
target_link_libraries(binname librarylist) |
动态库 |
lib_LIBRARIES=libname.so
libname_SOURCES= |
add_library(libname shared ${source} ) |
静态库 |
lib_LIBRARIES=libname.a
libname_a_SOURCES= |
add_library(libname static ${source} ) |
头文件 |
INCLUDES=
include_HEADES=
或CFLAGS=-I |
include_directories(list) |
源码搜索 |
|
aux_source_directories(. list) |
依赖库 |
LIBS=
LDADD= |
target_link_libraries(binname librarylist) |
标志 |
CFLAGS=
LDFLAGS= |
set(CMAKE_C_FLAGS ...) |
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()
endif |
if(my)
else(my)
endif(my)
while(condition)
endwhile(condition) |
执行外部命令 |
|
exec_program(commd ) |
子模块 |
|
include() |
信息输出 |
|
messge(STATUS "messge") |
项目 |
|
project(name) |
我知道的就这些,大家可以帮忙指正补充。cmake相比autotool确实好用,包括KDE在内的很多大型项目也都在使用cmake。不过autotools的使用率仍旧比cmake要高。
分享到:
相关推荐
开发步骤太多,配置繁琐 [ autoscan + autoconf + automake ]; 通常编译的./configure文件,大多通过由autotools构建的,最终生成Makefile和config.h文件 CMake: CMake是一个跨平台的安装(编译)工具 CMake类似...
Professional CMake_ A Practical Guide 一份逻辑清晰的cmake书籍
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 ...
参照网上资料在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
yum -y install lzo-devel zlib-devel autoconf automake libtool cmake openssl-devel 2、安装protocolBuffer protobuf-2.5.0.tar.gz 3、安装maven apache-maven-3.5.4-bin.tar.gz 4、安装ant apache-ant-1.9.13-...
CMake 项目的 C++ 库。 注意:本手册仅在 ubuntu 14.04 下测试,其他平台不保证。 一般来说,要将 tensorflow 库编译为 c++ 共享库,我们还需要另外两个库: protobuf和eigen ,以及一个编译工具bazel 。 如果你非常...
对于OSX是必需的:已安装的自制软件: cmake mercurial git wget curl pkg-config nasm autoconf automake libtool autogen gnu-sed sdl2 shtool 对于Linux(ubuntu / debian)是必需的: sudo apt install ...
yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison 2、安装boost库: 首先先查询是否已经安装过boost rpm -qa boost* 卸载旧boost-*等库: yum -...
autoconf, automake, bison, bzip2, cmake, doxygen, diffutils, flex, g++/gcc-c++, gcc, git, gzip, libarchive, libcurl, libelf, libgpgme, libssl, libtool, libusb-dev, m4, make, ncurses, patch, pkg-...
Debian Wheezy 初始系统安装程序在初始安装/登录到新的 Debian Wheezy 操作系统 (amd64/x86) 后执行的脚本。 包括用于进行配置调整的sed命令,例如...config autoconf libtool automake pkg-config \cmake software-pro
强化学习游戏酿造更新酿造安装cmake pkg-config automake autoconf libtool boost wget pip3安装virtualenv 虚拟环境来源venv / bin / activate pip3 install -r requirements.txt
编译环境如下: jdk1.7 apache-maven-3 protobuf-2.5.0 findbugs-1.3.9 gcc gcc-c++ make cmake openssl zlib ncurses snappy bzip2 lzo lzop autoconf automake
yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake
代码如下:yum -y install autoconf automake libtool cmake ncurses-devel openssl-devel lzo-devel zlib-devel gcc gcc-c++ 下载相应源码包 wget ...
欧拉公式求长期率的matlab代码警告:此代码大部分已被弃用。 看一下 在2013年采用256个GPU进行的剪切盒设置...确保在您的构建系统上安装了最新的自动工具(autoconf,automake,libtool,m4); 然后运行sh autogen
# yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses* libmcrypt* libtool-ltdl-devel* make cmake --必要软件包安装 # useradd mysql # tar -zxvf mysql-5.6.10.tar.gz # cd ...
* 安装必要的软件包,包括gcc、gcc-c++、gcc-g77、autoconf、automake、zlib、fiex、libxml、ncurses-devel、libmcrypt、libtool-ltdl-devel、make、cmake、bison、bison-devel * 安装过程中,可以使用公司内部的yum...
在编译安装MySQL之前,需要安装一些依赖包,包括gcc、gcc-c++、gcc-g77、autoconf、automake、zlib、libxml、ncurses-dev、libmcrypt、libtool-ltdl-devel和make。这些依赖包可以使用yum命令来安装。 编译安装MySQL...
2、yum install gcc gcc-c++ autoconf automake cmake bison m4 libxml2 libxml2-devel libcurl-devel libjpeg-devel libpng-devel libicu-devel #安装php、MySQL、Nngix所依赖的包 3、下载以下包 #我把所有源文件都...