cmake与autoconf+automake的对比

摘要:
cmake和autoconf+automake之间的比较-起源-博客频道-CSDN NETcmake与autoconf+automake的比较:C++2012-05-0717:03619人阅读评论,收集报告,首先,比较它们没有意义。它们都是生成生成文件的工具。Cmake诞生较晚,解决了自动工具的许多问题。Autotools是一个具有很强灵活性的工具集,但由于太多的步骤和冗长的配置,有很多选择,cmake是最好的工具之一。Cmake比autotool更容易使用。许多大型项目,包括KDE,也使用cmake。

cmake与autoconf+automake的对比 - 缘起 - 博客频道 - CSDN.NET


分类:
C++

2012-05-07 17:03
619人阅读
评论(0)
收藏
举报

首先,拿他们对比本身没有太多的意义,他们都是产生makefile文件的工具。cmake产生的晚,解决了很多autotools工具的问题。autotools是一个工具集具有强大的灵活性,但是因为步骤太多,配置繁琐,产生了很多的替代方案,cmake是其中最优秀的之一。当然很多其他替代品不会产生makefile文件而直接具有make的功能了。看到下图,你是不是感觉有些发晕。

cmake与autoconf+automake的对比第1张

不过还好,它是“八股文”,所有的步骤都是如此。

  1. 运行autoscan命令

  2. 将configure.scan 文件重命名为configure.in,并修改configure.in文件

  3. 在project目录下新建Makefile.am文件,并在core和shell目录下也新建makefile.am文件

  4. 在project目录下新建NEWS、 README、 ChangeLog 、AUTHORS文件

  5. 将/usr/share/automake-1.X/目录下的depcomp和complie文件拷贝到本目录下

  6. 运行aclocal命令

  7. 运行autoconf命令

  8. 运行automake -a命令

  9. 运行./confiugre脚本

我们再看看cmake的步骤:

  1. 编写CMakeLists.txt
  2. 运行cmake命令

9比2,当然不是比分是步骤。

那我们再来看一下他们的主要工作,他们的配置文件吧:

  • atuoconfig的配置文件configure.ac我们通过autosan生成,我们只需要修改就可以、autoconfig的配置文件Makefile.am我们需要自己手工从头编写;
  • cmake的配置文件CMakeLists.txt需要手工编写,当然cmake提供了gui的配置工具供大家使用;

我们再看看他们配置文件的内容吧,这是我们的比较的重点,因为这是我们实际使用的关键步骤:

autotoolscmake
变量定义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 ...)
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()
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要高。

免责声明:文章转载自《cmake与autoconf+automake的对比》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇应急溯源SSH日志查看小技巧IDEA连接虚拟机下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Visual Studio 2013新建工程导入现有代码文件夹并且保持目录结构

本文提供了一个在Windows环境下使用Visual Studio 2013编辑现有源代码并且保持目录结构的方法。本文使用VS2013中文社区版做示例(本版本为免费版,可在VS官网下载),其他版本的VS操作方式类似。打开VS2013,选择【菜单】-【新建】-【从现有代码创建项目】 选择项目类型:Visual C++ 项目文件位置:创建完成后会在这个目录生成...

Windows下使用CMake编译SuiteSparse成VS工程

一、CMake安装 https://CMake.org/download/ 这里可以下载到对应不同平台的安装包,这里分为源码包以及二进制可执行文件两类。然后根据需要进行下载安装就好了。 如果只安装 CMake-Gui 的版本,选择 cmake-3.20.0-rc2-windows-x86_64 这个版本。 详细安装可参考:Qt:在Windows 10安装...

freebsd上源码安装cmake

https://github.com/Kitware/CMake/releases/download/v3.18.0-rc2/cmake-3.18.0-rc2.tar.gz下载:tar.gz的包 解压:tar -zxvf 包 查找:cd到解压后的包路径 检查树:./bootstrap 编译:make 编译安装:make install 清除:rehash...

1. CMake 系列

目录 1. 文件目录结构 2. 库文件源代码 3. 编译生成库文件 1. 文件目录结构 首先创建如下目录结构: └── lib ├── build # ├── CMakeLists.txt └── src # ├── add.c └── add.h 从上面的结构,可以看出博主想实现...

43 编译原理及cmake使用手册学习

0 引言 大量开源库需要通过cmake编译后使用,了解cmake的基本指令以及CMakeLists.txt的写法非常重要,其基础是了解编译原理。另外,为了对cmake编译的代码进行调试,需要了解CMakeList.txt的写法。本文将对这些关键问题进行探讨,并记录一些关键点。 参考了如下链接。 https://blog.csdn.net/wzzfeitia...

配置glibc

cmake_minimum_required(VERSION 3.10)project(yolo_example)set(CMAKE_CXX_STANDARD 11)include(FindPkgConfig)pkg_check_modules(GLIB glib-2.0 REQUIRED)include_directories(${GLIB_INCLUD...