首页
学习
活动
专区
圈层
工具
发布

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。

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

相关·内容

  • 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

    98530

    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

    89220

    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]的宏。

    3.1K10

    Linux中的configure,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”要改写成可执行文件名

    4.2K30

    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.6K20

    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.3K10

    Linux中的configure,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.5K40

    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 您要發布這些檔案,但是它們不需要編譯

    45620

    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时,就会执行大括号里面的代码

    81740

    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也指明自己需要编译的下级目录。

    8.9K31

    coreseek实现中文检索服务

    ; LANG=zh_CN.UTF-8 LC_ALL="zh_CN.UTF-8" ##确保可以正常显示,否则请检查当前环境的locale配置,以及当前环境或者客户端已设置好支持UTF-8中文字符显示...,将自动安装到/usr/local/mmseg3/etc中 ##中文分词测试,显示不正常,请检查当前环境下的locale和UTF-8中文字符显示设置 $  /usr/local/mmseg3/bin...如要已启动服务,要更新索引,/usr/local/coreseek/bin/indexer -c etc/csft.conf --all --rotate ##然后,请参考csft-3.2.14下api目录中的相关文件...utf8来取代 default-character-set=utf8即可) 注:如果没有[client]就手工加入[client]段 ( 5.0以上版本修改方法: 修改/etc/my.cnf 中的设置...那么已经创建好的数据库及库中的表要如何更改为utf8呢?

    95230

    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.3K50

    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等文件.

    83300
    领券