cmake automoc,automake autoconf

  cmake automoc,automake autoconf

  cmake和autoconf automake的比较。网

  cmake和autoconf automake的比较

  分类:

  C

  2012-05-07 17:03

  69人阅读

  评论(0)

  收集

  首先,两者相互比较没有太大意义。都是生成makefile文件的工具。Cmake出现的比较晚,解决了很多自动工具的问题。Autotools是一个灵活性很强的工具集,但是因为步骤太多,配置复杂,所以产生了很多替代品,cmake就是其中的佼佼者。当然,其他很多替代品都有直接制作而不是制作文件的功能。看到下图是不是有点头晕?

  还好是“八股文”,所有步骤都一样。

  运行自动扫描命令

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

  在项目目录中创建新的Makefile.am文件,并在核心和shell目录中创建新的makefile.am文件。

  在项目目录中创建新的新闻、自述文件、变更日志和作者文件。

  复制/usr/share/automake-1中的depcomp和complie文件。X/directory到这个目录。

  运行本地命令

  运行autoconf命令

  运行automake -a命令

  运行。/confiugre脚本

  我们再来看看cmake的步骤:

  编写CMakeLists.txt并运行cmake命令9到2。当然不是分数而是步数。

  然后让我们看看他们的主要工作,他们的配置文件:

  Atuoconfig的配置文件configure.ac是由autosan生成的,我们只需要修改即可。我们需要从头开始手动编写autoconfig的配置文件Makefile.am。Cmake的配置文件CMakeLists.txt需要手动编写。当然,cmake提供gui配置工具给大家使用;我们再来看看他们简介的内容。这是我们比较的重点,因为这是我们实际使用的关键步骤:

  Autotoolscmake变量定义名称=.设置(名称, .)环境检测AC_INIT。

  测试程序

  交流编程控制

  测试函数库

  AC_CHECK_LIB([pthread],[pthread_rwlock_init])

  交流程序库

  测试头文件

  测试类型定义

  测试结构

  测试编译器特性

  测试库函数

  测试系统调用

  AC _ output find _ library(lib libname path llist)

  find_package(包名)

  find_path(变量名称路径列表)

  find_program(var name pathlist)子目录SUBDIRS=add _子目录(list)可执行文件bin_PROGRAMS=binname

  binname_SOURCES=

  binname_LDADD=

  binname_CFLAGS=

  binname _ LD flags=add _ executable(binname $ { sources })

  Target _ link _ libraries (bin名称库列表)动态库lib_LIBRARIES=libname.so

  libname _ sources=add _ library(libname shared $ { source })静态库lib_LIBRARIES=libname.a

  libname _ a _ sources=add _ library(libname static $ { source })头文件包括=

  include_HEADES=

  或者cflags=-I include _ directory(list)源代码搜索aux _ source _ directories(。列表)从属库LIBS=

  Add=target _ link _ libraries (bin名称库列表)标志CFLAGS=

  LDFLAGS=set(CMAKE_C_FLAGS.)libtoolAC_PROG_LIBTOOL

  lib_LTLIBRARIES=name.la

  Name_la_SOURCES=安装设置安装(目标目标.

  [[存档库运行时][目标

  目录][权限权限.]

  [配置[调试发布.]]

  [组件组件] [可选]] [.])其他文件EXTRA_DISTinstall(FILES文件.)

  install的条件语句(目录目录.)使用Make的条件语句。

  如果()

  endifif(我的)

  其他(我的)

  endif(我的)

  while(条件)

  Endwhile(condition)执行外部命令exec_program(commd)子模块include()信息输出messge(STATUS messge )项目(name)。我就知道这么多,你可以帮我纠正一下。与autotool相比,cmake确实很好用,包括KDE在内的很多大型项目也在使用cmake。但是,autotools的使用率仍然高于cmake。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: