首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Automake:Makefile.am 中的条件语法

Automake 是一个用于生成 Makefile 的工具,它可以根据源代码文件的变化自动生成 Makefile。Makefile.am 是 Automake 的配置文件,用于指定源代码文件、库文件、头文件等信息。在 Makefile.am 中,可以使用条件语法来根据不同的条件选择不同的编译选项、依赖关系等。

条件语法的基本格式如下:

代码语言:txt
复制
if CONDITION
  # 当条件为真时的代码
else
  # 当条件为假时的代码
endif

其中,CONDITION 是一个条件表达式,可以包含变量、函数调用等。条件表达式的值可以是 "true" 或 "false",也可以通过比较运算符、逻辑运算符等进行计算。

在 Makefile.am 中,可以使用的条件表达式包括:

  • 变量:如 $(OS)、$(CC) 等
  • 函数:如 ifeq、ifneq、ifdef、ifndef、ifeq、ifneq、ifelse、ifnelse 等
  • 比较运算符:如 ==、!=、<、>、<=、>= 等
  • 逻辑运算符:如 &&、||、! 等

例如,在 Makefile.am 中,可以使用条件语法来根据操作系统选择不同的编译选项:

代码语言:txt
复制
if OS_LINUX
  AM_CFLAGS = -DLINUX
else if OS_MACOSX
  AM_CFLAGS = -DMACOSX
else
  AM_CFLAGS = -DWINDOWS
endif

这里,OS_LINUX、OS_MACOSX 和 OS_WINDOWS 是 Automake 预定义的变量,分别表示 Linux、MacOSX 和 Windows 操作系统。根据当前操作系统的不同,AM_CFLAGS 变量的值会被设置为不同的编译选项。

总之,条件语法是 Automake 中非常重要的一个功能,可以帮助开发者根据不同的条件生成不同的 Makefile。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Autoconf编译配置

/configure: configure是一个脚本,一般由Autoconf工具生成,它会检验当前系统环境,看是否满足安装软件所必需条件:比如当前系统是否支持待安装软件,是否已经安装软件依赖等。...调用automake,将每个Makefile.am转化成Makefile.in,同时生成满足GNU编码规范一系列文件(带-a选项自动添加缺少文件,但有几个仍需要自己添加,在执行automake前需执行...1.1:常用缺省安装目录如下 目录 Makefile.am变量 使用方式 prefix /usr/local 安装目录,通过–prefix指定 exec_prefix ${...自定义目录: 在根目录下Makefile.am添加如下内容: configdir=${prefix}/config => 定义一个自定义目录名称config,注意dir后缀是固定 config_DATA...文件 执行autoconf生成configure 编写Makefile.am文件:Automake工具会根据configure.in参量把Makefile.am转换成Makefile.in

1.1K50

Linux下automake工具使用(自动构建Makefile文件)

automake本身就是这一类。 3) deep指的是所有源代码都被储存在子目录;顶层目录主要包含配置信息。 就是所有源文件及自己写头文件位于当前目录一个子目录,而当前目录里没有任何源文件。...文件 Automake工具会根据config.in参量把Makefile.am转换成Makefile.in文件。...在使用Automake之前,要先手动建立Makefile.am文件。 Makefile.am是一种比Makefile更高层次规则。...automake要求每个目录都有自己Makefile.am文件来编译各自目录 下代码。...在顶级目录,有一个Makefile.am文件,该文件通过SUBDIRS指明了这个目录下有多少个直接下级目录代码需要编译。下级目录Makefile.am也指明自己需要编译下级目录。

5.2K21

Autotools -- 自动编译链工程构建

Autotools – 自动编译链 简介 虽然现在cmake,qmake 或者 ide功能越来越强大,也越来越简洁。但是在日常使用,庞大开源库,autoconfig 还是占据大半壁江山。...笔者打包工作历程,也是从简单可执行文件拷贝到生成安装包,也是走全了。但是实际工作一直也没有深究过编译语法,打包工具编写。到前一段时间,自己梳理了常用编译,安装语法等。...Makefile.am Makefile.am 文件是什么, Makefile.am->Makefile.in->Makefile,autoMake 工具利用 Makefile.am 最终生成Makefile...Makefile.am 文件,在 需要编译目录或者编译以来目录每个目录都需要添加对应Makefile.am 文件。...下边为笔者简单说明: Makefile.am 宏定义语法规则为: 文件类型 书写格式 可执行文件 bin_PROGRAMS = main main_SOURCES = main.cppmain_LDADD

67720

autoMake工具使用实例(Hello, World!)

,Makefile可能还要跟着修改.这样就造成了手工书写Makefile 诸多问题,automake恰好能很好地帮助我们解决这些问题....使用automake,程序开发人员只需要写一些简单 含有预定义宏 文件,由autoconf根据一个宏文件生成configure,由automake根据另一个宏文件生成Makefile.in,再使用configure...依据Makefile.in来生成一个符合惯例 Makefile.下面我们将详细介绍Makefile automake生成方法..../helloworld 当然事先要先安装相关软件库。这里不再多说。 下面用一个例子来说明autoMake使用方法。 关于hello,world....有了Makefile.am文件,我们就可以使用automake了: $ $ automake --add-missing configure.ac:4: warning: AM_INIT_AUTOMAKE

1.2K10

Autoconf简介

主要组成部分有Autoconf、Automake和Libtool。Automake为了兼容各个系统make使用。 从Makefile.am文件和Autoconf一起生成Makefile.in文件。...需要共享库时候会自Libtool会自动地被使用,无需知晓其语法规则。...参数任何前导空格和新行都会被忽视,除非被引用。详细引用规则当在宏参中使用相同文本时,必须有一个额外引用级别,并且对重复部分或者整体进行双重符号引用。...生成configure.scan文件之后需要检查修改才能将其重命名为configure.ac使用ifnames列出条件语句ifnames打印所有给定C源文件#if, #elif, #ifdef,...先找跟随Autoconf一起发布文件宏,再在含有发布Autoconf宏文件文件夹找可选文件[acsite.m4]宏,然后在当前文件夹找[aclocal.m4]宏。

2.8K10

Using Automake and Autoconf「建议收藏」

這是你原始檔案,透過 #define 定義標頭檔,好提供一個方式讓人們為它們平台自訂 configuration。config.h.in 能夠被 autoheader 這個工具程式自動產生。...然而,在你專案,你需要 stamp-h 這個檔案來確保 automake 從 config.h.in 重新產生 config.h。執行 ‘touch stamp-h ‘ 讓您專案新增這個檔案。...automake automake 會尋找 Makefile.am 這個檔案,然後依據它找到巨集產生 Makefile.in。當然,這個會在稍後 configure script 用到。...而且要確定最頂層 configure.in AC_OUPUT 巨集要加入檔名以產生 Makefile。...一個子目錄下 Makefile.am 應該包含像底下這行: EXTRA_DIST = somefile.txt someotherfile.html 這會告訴 automake 您要發布這些檔案,但是它們不需要編譯

37820

Linux下AutoMake创建工程流程

AutoMake ❝GNU Automake是一种编程工具,可以产生供make程序使用Makefile,用来编译程序。它是自由软件基金会发起GNU计划其中一项,作为GNU构建系统一部分。...automake所产生Makefile符合GNU编程标准。Automake目标是让用户透过高级语言来写makefile,而不是透过纯手工方式来写整个makefile。...❞ 如果工程源码量比较大,文件比较多,那么通过AutoMake管理工程绝对是一个好选择。下面展示如何一步一步创建属于自己AutoMake工程 环境:Ubuntu16.04 1....在工程目录创建以下目录及文件 mkdir include src # 添加源码目录 touch Makefile.am touch src/Makefile.am touch NEWS README ChangeLog...修改文件 修改Makefile.am src/Makefile.am文件 Makefile.am修改如下: #SUBDIRS=lib src SUBDIRS=src #打包时额外包含 EXTRA_DIST

87130

Linuxconfigure,make,make install到底在做些什么

aclocal # 产生 aclocal.m4 autoconf # 根据 configure.in 生成configure automake --add-missing # 根据 Makefile.am...Hello world,a new test 我们看看构建GNU程序如何按照规范来模拟这个过程 我们创建一个文件configure.ac,里面是一些宏,是接下俩autoconf来处理需要,然后交给...automake尝试Makefile时工具,AC_PROG_CC是编译器检测,AC_CONFIG_FILES是automake构建出类似.in文件。...然后就是Makefile文件,我们设定名字为Makefile.am,这部分内容和上面的配置是密切相关。...bin_PROGRAMS定义了要产生执行文件名,这里我们定义为helloworld file_SOURCES定义file这个执行程序依赖文件,其中“file_SOURCES”前部分“file”要改写成可执行文件名

3.1K40

Linuxconfigure,make,make install到底在做些什么

# 根据 Makefile.am生成Makefile.in 网上找到一张总结很牛图,很全面。...Hello world,a new test 我们看看构建GNU程序如何按照规范来模拟这个过程 我们创建一个文件configure.ac,里面是一些宏,是接下俩autoconf来处理需要,然后交给...然后就是Makefile文件,我们设定名字为Makefile.am,这部分内容和上面的配置是密切相关。...[root@oel64 tmp]# cat Makefile.am AUTOMAKE_OPTIONS=foreign bin_PROGRAMS = helloworld helloworld_SOURCES...bin_PROGRAMS定义了要产生执行文件名,这里我们定义为helloworld file_SOURCES定义file这个执行程序依赖文件,其中“file_SOURCES”前部分“file”要改写成可执行文件名

3.8K30

php autoconf 配置,automake,autoconf使用详解

前端,也可以单独作为一个宏处理器. 4.新建Makefile.am 新建Makefile.am文件,命令: $ vi Makefile.am 内容如下: AUTOMAKE_OPTIONS=foreign...Makefile.am定义 宏和目标,会指导automake生成指定 代码.例如,宏bin_PROGRAMS将导致编译和连接 目标被生成. 5.运行automake: $ automake –add-missing.../depcomp’ automake会根据Makefile.am文件产生一些文件,包含最重要 Makefile.in. 6.执行configure生成Makefile $....Makefile.am Makefile.am是 用来生成Makefile.in ,需要你手工书写.Makefile. am定义了一些内容: AUTOMAKE_OPTIONS 这个是 automake... 选项.在 执行automake时,它会检查目录下是 否存在 标准 GNU软件包应具备各种文件,例如AUTHORS.ChangeLog.NEWS等文件.

66600

Python 条件语句if作用和语法、注意事项【内含代码讲解】

其实这里所谓判断就是条件语句,即条件成立执行某些代码,条件不成立则不执行这些代码 二、条件if语法 2.1 语法: If 条件条件成立执行代码1 条件成立执行代码2     ......... 2.2语法注意事项: 1. if这个关键词,也就是如果意思 2. if后面紧跟着条件,如果条件成立执行下方带缩进代码,条件不成立则不执行代码 3....条件后面你冒号意思表示条件已经书写完成了 4. 条件成立执行代码前面缩进4个空格距离,这里基本不用打击手动去弄这个缩进4格,因为在PyCharm里书写代码按住换行键后自动缩进4格 5....冒号之后换行语句可以是一条也可以是多条,看自己需求情况 三、快速体验if条件语句 """ if 条件: 条件成立执行代码1     ...... """ if True: print('条件成立执行代码...#  返回结果只打印最后一行代码 上面代码执行结果: 图片1.png 总结:在if条件语句中,要严格按照语法来书写代码,if语句条件成立执行代码是带有缩进4格代码块,而没有缩进语句块和if条件无关

1.1K20

使用autoconf生成Makefile并编译工程步骤

,autoconf通过检测这个文件是否存在,判断这个路径是否正确,一般不用管 AC_CONFIG_HEADERS不用管 插入下面这句,automake阶段需要,否则会报错 AM_INIT_AUTOMAKE...前缀AM指的是 AutoMake 最后AC_OUTPUT,改为AC_OUTPUT(Makefile) 修改完之后文件如下所示: #修改后文件 #...AC_OUTPUT(Makefile) 保存,并将configure.scan重命名为configure.ac 新建Makefile.am gedit Makefile.am 输入以下代码 AUTOMAKE_OPTIONS...后面是automake执行选项,用空格隔开; foreign指的是只检测必须文件; subdir-objects指的是编译生成.o文件可以放在子路径(跟源文件放一起),没有这个选项的话,所有...结果是正确。 进入src目录下,我们发现多了两个文件 ? 这就是AUTOMAKE_OPTIONS里subdir-objects作用,少了这句话,这两个.o文件就会出现在你根目录下。

1K30

Swift基础语法(二)条件控制语句认识

实例代码: /* 1、直接获取数组数据 */ let names = ["A","B","C"] for name in names[0...3] { print(name) } 单侧区间: 让区间朝一个方向尽可能远...break,所以可以显式写breake,不写也不会贯穿到后面条件 如果我们想要实现贯穿效果,需要加上fallthrough 需要注意是switch也支持Character、String类型 注意...,元组是否在这个区间内 可以使用下划线_忽略这个值 4.2.4 模式匹配 也可以使用模式匹配方式进行更大范围匹配 代码示例: 说明: 4.2.5 值绑定 可以在匹配过程获取其中某个值 代码示例...5、Guard语句 主要用于提前退出,条件不符合时候退出,判断值是否成立用它就很方便了 代码示例: func test(v: Bool) { guard v else { print("当条件为false...时进入") return } print("当条件为true时进入") } test(v: true) test(v: false) 说明: 当guard语句条件为false时,就会执行大括号里面的代码

72740
领券