autotools入门
- 格式:pdf
- 大小:159.01 KB
- 文档页数:18
AutoLISP入门单元一:AutoLISP主角登场 (2)单元二:AutoLISP的关键、基本结构及语法 (4)单元三:快速分类浏览AutoLISP功能函数(一) (10)单元四:快速分类浏览AutoLISP功能函数(二) (13)单元五:轻松快速的掌握AutoLISP设计技巧 (16)单元六:像素数据的取得与活用技巧(一) (21)单元七:像素数据的取得与活用技巧(二) (25)单元八:新手上路-参数设计的关键技巧 (32)单元一:AutoLISP主角登场一. AutoLISP 是何方神圣?1、AutoLISP是AutoCAD的最佳拍檔!2、AutoLISP内含于AutoCAD软件内,不用另外花钱买!3、AutoLISP是强化AutoCAD最好、最直接的『程序语言』!4、AutoLISP易学、易用,即使不会程序设计的AutoCAD使用者,都能在最短的时间内,写出令人惊讶、赞叹的功能!若说AutoLISP的出现,是替AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张!5、AutoLISP希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷!二. AutoLISP 程序语言的特质分析:学习AutoLISP是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写出精彩漂亮的AutoLISP程序!语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而有其独特的风格!功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合AutoCAD的特殊函数,再加上AutoLISP可直接呼叫执行所有AutoCAD的指令,以及掌握运用所有的AutoCAD系统变量,功能之强大令人欣喜不已!撰写的环境不挑剔:只要是一般的文书编辑软件都适用! 如:Windows的记事本、PE2、PE3、DW3、书中仙、汉书、EDIT....等直译式程序:不用再作编译,『即写即测、即测即用』,马上可以在AutoCAD中响应效果,马上就有成就感!横跨各作业平台:悠然自得,虽然AutoCAD有DOS、Windows版本之分但是AutoLISP却可在不改写的原貌下,加载与执行!三.撰写AutoLISP 的动机?1、欲强化AutoCAD 原有指令时.2、欲创造更有用的AutoCAD 新指令.3、欲简化繁琐的环境设定或绘图步骤时.4、欲处理参数式绘图时.5、欲做图面资料读文件、写文件.6、欲做AutoCAD 简报展示时.7、欲达到真正灵活掌控AutoCAD 时.8、欲提升自己跨上AutoCAD 高手列车时.四.AutoLISP 的效益评估?1. 对公司负责人或设计主管而言:A. 也许某员工或干部花了20个小时撰写一个AutoLISP程序,表面上,这将近三天的时间,他连一张图都没有画,甚至可能偶有发呆、沈思,若此程序一天可以替公司绘图部门节省1小时绘图时间,那算一算,只要20天就抵销开发成本,而20天以后都是赚的,『用的愈久,省的愈多』!B. 若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优秀人员出去受训,学习更好的设计技巧与创意呢?!C. 千万不要因为您的不懂或压抑,SHOW您的权威与POWER,如此,不但对员工造成打击,甚至您可能成为阻碍了公司计算机化进步的罪魁祸首D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥无期,那倒不如求助于市面上已有的相关AutoCAD 支持软件。
autotools的使用2010-04-07 15:05:39| 分类:软件开发| 标签:autotools|字号大中小订阅在较大项目中, 如果手动维护Makefile, 那将是一件复杂并痛苦的事情. 那么, 有没有一种轻松的手段生成Makefile呢? autotools系列工具正是在这样的呼声中诞生的. 它只需用户输入简单的目标文件, 依赖文件, 文件目录等就可以轻松地生成Makefile了. 另外, 这些工具还可以完成系统配置信息的收集, 从而可以方便地处理各种移植性问题.autotools是系列工具, 它包含有:∙aclocal∙autoscan∙autoconf∙autoheader∙automakeautotools使用流程:下面用一个简单的hello.c程序, 演示autotools的使用流程. hello.c如下:wangsheng@pc01:~/work/train/make/automake$ lshello.cwangsheng@pc01:~/work/train/make/automake$ cat hello.c#include <stdio.h>int main(){printf("Hello, autotools!\n");return 0;}(1) 使用autoscan命令自动生成configure.scan文件它会在给定目录及其子目录树中检查源文件, 若没有给出目录, 就在当前目录及其子目录树中进行检查.它会搜索源文件以寻找一般的移植性问题并创建一个文件"configure.scan", 该文件就是接下来autoconf要用到的"configure.in"原型.wangsheng@pc01:~/work/train/make/automake$ autoscanwangsheng@pc01:~/work/train/make/automake$ lsautoscan.log configure.scan hello.c(2)将configure.scan重命名为configure.in, 并做适当修改configure.scan的内容:wangsheng@pc01:~/work/train/make/automake$ cat configure.scan# -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2.65])AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])AC_CONFIG_SRCDIR([hello.c])AC_CONFIG_HEADERS([config.h])# Checks for programs.AC_PROG_CC# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_OUTPUT将configure.scan重命名为configure.inwangsheng@pc01:~/work/train/make/automake$ mv configure.scan configure.in根据具体情况, 适当修改, 以下加粗部分是修改的内容:wangsheng@pc01:~/work/train/make/automake$ cat configure.in# -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2.65])#AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_INIT(hello,1.0)AM_INIT_AUTOMAKE(hello,1.0)AC_CONFIG_SRCDIR([hello.c])AC_CONFIG_HEADERS([config.h])# Checks for programs.AC_PROG_CC# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_CONFIG_FILES([Makefile])AC_OUTPUT下面对这个脚本进行解释:∙以"#"号开始的行为注释∙AC_PREREQ宏声明本文要求的autoconf版本, 如本例中的版本2.65∙AC_INIT宏用来定义软件的名称和版本等信息, 在本例中省略了BUG-REPROT-ADDRESS, 一般为作者的E-mail∙AM_INIT_AUTOMAKE是手动添加的, 它是automake所必备的宏, 也同前面一样, PACKAGE是所要产生软件套件的名称,VERSION是版本编号.∙AC_CONFIG_SCRDIR宏用来侦测所指定的源码文件是否存在, 来确定源码目录的有效性. 在此处指当前目录下hello.c∙AC_CONFIG_FILES宏用于生成相应的Makefile文件.(3) 运行aclocal命令,生成"aclocal.m4"文件, 该文件主要处理本地的宏定义wangsheng@pc01:~/work/train/make/automake$ aclocalwangsheng@pc01:~/work/train/make/automake$ lsaclocal.m4 autom4te.cache autoscan.log configure.in hello.c(4) 运行autoconf命令生成configure可执行文件wangsheng@pc01:~/work/train/make/automake$ autoconfwangsheng@pc01:~/work/train/make/automake$ lsaclocal.m4 autom4te.cache autoscan.log configure configure.in hello.c(5) 运行autoheader命令, 生成config.h.in文件.该工具通常会从"acconfig.h"文件中复制用户附加的符号定义. 本例中没有附加的符号定义, 所以不需要创建"acconfig.h"文件.wangsheng@pc01:~/work/train/make/automake$ autoheaderwangsheng@pc01:~/work/train/make/automake$ lsaclocal.m4 autom4te.cache autoscan.log config.h.in configure configure.in hello.c(6) 运行automake命令, 生成Makefile.in文件这一步是创建Makefile很重要的一步, automake要用的脚本配置文件是Makefile.am, 用户需要自己创建相应的文件. 之后, automake工具将自动转换成Makefile.in 本例中, 创建的文件为Makefile.am, 内容如下:wangsheng@pc01:~/work/train/make/automake$ cat Makefile.amAUTOMAKE_OPTIONS=foreignbin_PROGRAMS=hellohello_SOURCES=hello.c说明:∙其中的AUTOMAKE_OPTIONS为设置automake的选项. 由于GNU对自己发布的软件有严格的规范, 比如必须附带许可证声明文件COPYING等, 否则automake执行时会报错. automake提供了3中软件等级:foreign, gnu和gnits, 供用户选择. 默认级别是gnu. 在本例中, 使用了foreign 等级, 它只检测必须的文件.∙bin_PROGRAMS定义要产生的执行文件名. 如果要产生多个执行文件, 每个文件名用空格隔开∙hello_SOURCES定义"hello"这个可执行程序所需的原始文件. 如果"hello"这个程序是由多个源文件所产生的, 则必须把它所用到的所有源文件都列出来, 并用空格隔开. 如果要定义多个可执行程序, 那么需要对每个可执行程序建立对应的file_SOURCES.在这里使用"--add-missing"选项可以让automake自动添加一些必须的脚本文件.wangsheng@pc01:~/work/train/make/automake$ automake --add-missingconfigure.in:7: installing `./install-sh'configure.in:7: installing `./missing'Makefile.am: installing `./depcomp'wangsheng@pc01:~/work/train/make/automake$ lsaclocal.m4 autoscan.log configure depcomp install-sh Makefile.inautom4te.cache config.h.in configure.in hello.c Makefile.am missing(7)运行configure, 生成Makfefile文件wangsheng@pc01:~/work/train/make/automake$ ./configurechecking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sane... yeschecking for a thread-safe mkdir -p... /bin/mkdir -pchecking for gawk... gawkchecking whether make sets $(MAKE)... yeschecking for gcc... gccchecking whether the C compiler works... yeschecking for C compiler default output file name... a.outchecking for suffix of executables...checking whether we are cross compiling... nochecking for suffix of object files... ochecking whether we are using the GNU C compiler... yeschecking whether gcc accepts -g... yeschecking for gcc option to accept ISO C89... none neededchecking for style of include used by make... GNUchecking dependency style of gcc... gcc3configure: creating ./config.statusconfig.status: creating Makefileconfig.status: creating config.hconfig.status: executing depfiles commandswangsheng@pc01:~/work/train/make/automake$ lsaclocal.m4 config.hconfig.statusdepcomp Makefile missingautom4te.cache config.h.in configure hello.c Makefile.am stamp-h1autoscan.log config.log configure.in install-sh Makefile.in可以看到, 在运行configure时收集了系统的信息, 用户可以在configure命令中对其进行自定义配置. ./configure的自定义参数有两种:∙开关式--enable-XXX或者--disable-XXX∙开放式-with-XXX=yyyautotools生成Makefile流程图如下:测试用autotools生成的Makefileautotools生成的Makefile具有以下主要功能:(1) make编译源程序, 键入make, 默认执行"make all"命令wangsheng@pc01:~/work/train/make/automake$ makemake all-ammake[1]: Entering directory `/home/wangsheng/work/train/make/automake'gcc -DHAVE_CONFIG_H -I. -g -O2 -MT hello.o -MD -MP -MF .deps/hello.Tpo -c -o hello.ohello.c mv -f .deps/hello.Tpo .deps/hello.Pogcc -g -O2 -o hello hello.omake[1]: Leaving directory `/home/wangsheng/work/train/make/automake'此时在本目录下就生成了可执行文件"hello", 运行"./hello"就能看到程序的执行结果:wangsheng@pc01:~/work/train/make/automake$ ./helloHello, autotools!(2) make install执行该命令, 可以把程序安装到系统目录中wangsheng@pc01:~/work/train/make/automake$ sudo make install此时, 直接在console输入hello, 就可以看到程序的运行结果(3) make clean清除之前所编译的可执行文件及目标文件wangsheng@pc01:~/work/train/make/automake$ make cleantest -z "hello" || rm -f hellorm -f *.o(4) make dist将程序和相关的文档打包为一个压缩文档以供发布wangsheng@pc01:~/work/train/make/automake$ make dist wangsheng@pc01:~/work/train/make/automake$ ls-l hello-1.0.tar.gz hello-1.0.tar.gz可见该命令生成了一个hello-1.0.tar.gz的压缩文档./。
2.2 绘制圆、修剪命令和图层设置2.2.1圆命令(Circle)圆是工程绘图中另一种常见的基本实体,可以用来表示柱、轴、轮、孔等。
AutoCAD 提供了5种绘制圆方式,这些方式是由圆心、半径、直径和圆上的点等参数来控制。
1. 调用命令方式 调用圆(Circle)命令的方式有下列三种:● 菜单方式:[绘图]→[圆]→[…]。
● 图标方式:单击[绘图]工具栏上的[圆]按钮。
● 输入方式:C↙。
(推荐优先选用)选择菜单方式启动绘制圆命令后,AutoCAD 弹出其级联菜单,如图2-10所示。
用户可根据需要指定级联菜单中的选项。
选择图标或输入方式启动绘制圆命令后,AutoCAD 命令行给出如下操作提示:命令: circle 指定圆的圆心或 [三点(3P)/两点(2P)/相切、相切、半径(T)]:(确定圆心)2.五种绘制圆方式说明(1) 圆的半径或直径 该种方式要求用户输入圆心和半径或直径来绘制圆。
“指定圆的圆心”选项是该命令的默认,当输入圆心的坐标值后,命令行提示:指定圆的半径或 [直径(D)]:(直接输入圆的半径,结束命令。
如果输入D,命令行 继续提示)(2) 三点(3P) 该选项表示用圆上三点确定圆的大小和位置。
输入3P 并回车后, 命令行提示:指定圆上的第一个点:(输入圆上第一点坐标值)指定圆上的第二个点:(输入圆上第二点坐标值)指定圆上的第三个点:(输入圆上第三点坐标值,结束命令)(3) 两点(2P) 该选项表示用给定两点为直径画圆。
输入2P 后并回车,命令行提示:指定圆直径的第一个端点:(输入圆直径的第一个端点坐标值)指定圆直径的第二个端点:(输入圆直径的第二个端点坐标值,结束命令)(4)相切、相切、半径(T) 该选项表示要画的圆与两条线段相切。
输入T 并回 车后,命令行提示:指定对象与圆的第一个切点:(拾取第一条与圆相切的线段。
光标靠近某线段后,即出图2-10 [绘图]→[圆]级联菜单现“切点”光标后单击,下同)指定对象与圆的第二个切点:(拾取第二条与圆相切的线段)指定圆的半径 :(输入半径,结束命令)(5)相切、相切、相切(A)该选项表示作一个三条线段均相切的圆。
AutoTools快速开发
宋国伟
【期刊名称】《开放系统世界》
【年(卷),期】2004(000)004
【摘要】程序开发需要注意的细节很多,不仅需要用户有良好的技术,而且还需要开发利器帮助用户化难为易。
在此介绍AutoTools工具在程序开发中的几个应用,帮助用户了解它是如何在程序开发中发挥作用,有什么便利之处。
【总页数】1页(P73)
【作者】宋国伟
【作者单位】无
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.Autotools改进数据库应用部署 [J], 刘媛媛
2.使用易语言快速开发IP修改工具 [J], 冯立彬
3.基于云技术的轻量化共享快速开发平台的设计与研究 [J], 王冠群;滕海波
4.基于模型驱动架构的软件快速开发技术研究 [J], 郑文斌;池晓金;蔡怡挺;高旭初;王晓东;何佩
5.‘早金酥’等特色梨新品种快速开发推广的有效途径 [J], 范业宏;李俊才;沙守峰因版权原因,仅展示原文概要,查看原文内容请购买。
GNU AUTOTOOLS 简介1.介绍大部分时候,你从网上下载了一个开放源代码的软件,在解压后,你一般会敲入以下三个命令来编译和安装你的程序:1)./configure2)make3)make install其中,configure脚本分析你的系统以找到合适的工具和库,make是真正用来编译构建软件的工具,make install来安装软件。
在开放源代码世界,configure脚本获得了广泛的使用,它使从源代码安装软件变得非常容易,本文主要就是介绍如何使用GNU autotools,以便使你能够以上面这种方式来编译和安装你的程序。
2.什么是GNU autotoolsGNU autotools主要包括下面三个工具:Autoconf –这个工具用来生成configure脚本。
就像前面提到的,这个脚本主要用来分析你的系统以找到合适的工具和库。
譬如:你的系统的C编译器是―cc‖还是―gcc‖?Automake –这个工具用来生成Makefiles。
它需要使用到Autoconf提供的信息。
譬如,如果Autoconf检测到你的系统使用―gcc‖,那Makefile就使用gcc作为C编译器。
反之,如果找到―cc‖,那就使用―cc‖。
Libtools –这个工具创建共享库。
它是平台无关的。
3.为―Hello,world‖添加Autoconf1) 创建一个―Hello,world!‖写一个简单的―Hello,world!‖程序hello.c:#include <stdio.h>int main(void){printf ("Hello World.\n");}写一个简单的MakefileMakefileEXEC:=helloall: $(EXEC).PHONY:cleanclean:rm -f hello *.o2) 添加Autoconf现在,我们将添加autoconf到这个程序。
基本指南:两数求和在命令行输入:(+ 2 3) (- 2 3) (* 2 3) (/ 2 3)如果直接输入(/ 2 3)则会显示0 因为2和3是整型所以AutoLisp把这些数字译为整型(AutoLisp进行了四舍五入)所以输入(setq x (/2.0 3))就可得到0.666667六位小数在命令行输入:!p则会显示p这个变量的值SETQ和变量Setq是来保存计算的结果的,相当于给一个变量赋值例:(setq x (/2.0 3)) 这边x是变量就是把2.0/3的值赋给xSetq能完成多项“设置相等”例如:(setq x 1.0 y 2.0 z 3.0) 就是分别赋给x y z 赋值AutoLISP函数1.数学函数(min 7 3 5 11) 就是取7 3 5 11这四个数的最小值(setq minbr (min 7 3 5 11))数学函数功能+加- 减*乘/除1+自增11- 自减1FLX截取实数的整数部分FLOAT整数变为实数REM返回除法的余数EXPT指数SIN求弧度角的正弦COS求弧度角的余弦ATAN求两个数字的反正切(setq rad (*(/ 45 180.0)pi))2.几何函数(setq p1 '(1.3 5.7)) ‘表示指定2个(3个)的坐标值,这样AutoLISP就不会计算这些值了(setq p2 '(7.5 3.1))(setq p3 '(9 4))(setq p4 '(0.1 2.5))(distance p1 p2)(angle p1 p2)(inters p1 p2 p3 p4)(osnap p1 "mid")2.例:在一个绘制楼梯间的AutoLISP例程中,一部分程序检查层高是否大于8英寸:如果大于,就绘制出14级台阶,如果小于就绘制13级台阶。
3.(strlen “Using AutoCAD”)STRLEN函数将报告Using AutoCAD为13个字符,计算空格。
第三章、开发工具本章目标9熟悉vi编辑器9熟悉gcc9Makefile入门9了解autotools工具的使用本章目录3.1、vi编辑器3.1.1、vi简介3.1.2、安装vi3.1.3、打开/创建一个文件3.1.4、命令行模式操作3.1.4.1、光标命令3.1.4.2、编辑命令3.1.4.3、查找命令3.1.4.4、复制删除命令3.1.5、底行模式操作3.1.5.1、退出命令3.1.5.2、设置环境3.2、gcc3.2.1、概述3.2.2、常用选项3.2.3、实例3.3、Makefile入门3.3.1、什么是Makefile3.3.2、基本结构3.3.3、隐含规则3.3.4、变量3.3.5、指示符3.3.6、注释3.3.7、实例3.4、autotools工具3.4.1、介绍3.4.2、实例3.5、集成工具的介绍3.1、vi编辑器3.1.1、vi简介vi是Linux系统中一款经典且功能强大的全屏幕文本编辑器,备受广大的Linux程序员追捧。
vi可以执行输入、删除、查找、替换、块操作等文本操作,可以根据实际需求对其进行定制。
vi有三种工作模式:命令行模式按Esc键即可进入该模式,用于输入命令。
文本插入模式在命令行模式下输入命令“i”后即可进入该模式,用于编辑文本。
底行模式也称ex转义模式,在命令行模式下输入命令“:”后即可进入该模式,等待输入命令。
3.1.2、安装vi一般情况下vi都包含在发行版的软件包中,但是在ubuntu中需要安装一下,可以使用apt-get install下载package安装包以及所有依赖包,同时进行安装或升级。
使用如下指令:#apt-get install vim-full或是手动下载一个Debian软件包vim-xxx.deb(可能需要依赖包),使用dpkg来安装:#dpkg-i vim-xxx.deb3.1.3、打开/创建一个文件打开一个终端,输入vi,可以加上要编辑的或是创建的文件,如果没有,在退出vi时候输入一个文件名即可,然后回车后即可进入vi的命令行模式。
关于GNU autotools的使用GNU Autotools指的就是下面的五个工具:(1)aclocal(2)autoscan(3)autoconf(4)autoheader(5)automakeAutotools的使用流程第一步:手工编写Makefile.am这个文件第二步:在源代码目录树的最高层运行autoscan。
然后手动修改configure.scan文件,并改名为configure.ac/ configure.in。
第三步:运行aclocal,它会根据configure.ac的内容生成aclocal.m4文件。
第四步:运行autoconf,它根据configure.ac和aclocal.m4的内容生成configure这个配置脚本文件。
第五步:运行automake --add-missing,它根据Makefile.am的内容生成Makefile.in。
第六步:运行configure,它会根据Makefile.in的内容生成Makefile这个文件。
AutoTools 傻瓜入门Makefile固然可以帮助make完成它的使命,但要承认的是,编写Makefile确实不是一件轻松的事,尤其对于一个较大的项目而言更是如此。
那么,有没有一种轻松的手段生成Makefile而同时又能让我们享受make 的优越性呢?本节要讲autotools系列工具正是为此而设的,它只需用户输入简单的目标文件、依赖文件、文件目录等就可以轻松地生成Makefile了,这无疑是广大用户的所希望的。
另外,这些工具还可以完成系统配置信息的收集,从而可以方便地处理各种移植性的问题。
也正是基于此,现在Linux上的软件开发一般都用autotools来制作Makefile。
学习GNU/LINUX开发的编程人员,上手之后不久就会在编译开源软件的时候碰到configure脚本,过段时间还会知道configure脚本是autoconf生成的;但是真正想用起来autoconf,却是要弄明白config.h,configure.in,Makfile.am等一大堆的文件,这可能要花些功夫。
autotool⼯具的使⽤⽅式(简单的例⼦)autotool⼯具的使⽤⽅式(简单的例⼦)autotool是⼀种帮助⽤户⾃动管理项⽬⽣成Makefile的⼯具。
有时候⼿动写Makefile可以满⾜⾃⼰的要求,但是随着项⽬增加,代码结构也变得⾮常复杂,这样⼀来⼿动维护每个Makefile就变得⾮常困难。
autotool的存在帮助降低了项⽬维护的难度。
autotool不是某⼀个⼯具,⽽是⼀系列⼯具的混合体。
autoscanaclocalautoconfautoheaderautomake这⼀系列最终⽬的就是⽣成makefile,进⽽帮助项⽬编译。
Makefile.am的作⽤Makefile.am⽂件是整个autotool⾃动⽣成makefile的灵魂,这其中不需要规定多么复杂的逻辑⽣成关系。
这⾥对这个内容进⾏着重介绍。
终极⽬标automake通过Makefile.am来⽣成Makefile.in。
bin_PROGRAMS(*program-list*) a program or programs build in the local directory that should be compiled, linked and installed.noinst_PROGRAMS(*program-list*) a program or programs build in the local directory that should be compiled, linked but not installed.bin_SCRIPTS(*script-list*) a script or scripts build in the local directory that should be installed.man_MANS(*page-list*)man pages that should be installed.lib_LTLIBRARIES(*lib-list*) a library or libraries that should be built using libtool.命名⽅案automake使⽤统⼀的命名规则,此举可以使⼯具明确需要构建的内容。