You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Automake中能否为_PROGRAMS变量内所有程序统一设置_CFLAGS、_LDADD等变量

完全可以,Automake支持多种方式批量给所有测试目标统一配置编译、链接参数,不需要逐个声明,以下是两种最常用的实现方案:

方案1:子目录独立构建(最推荐)

把所有测试代码单独放在tests/子目录下,在该目录下编写独立的Makefile.am,该文件下的编译参数完全独立,不会影响上层库的编译逻辑:

# tests/Makefile.am
TESTS = foo bar

check_PROGRAMS = $(TESTS)
# 仅作用于当前tests目录下所有目标的编译参数
AM_CFLAGS = -O0 -g --coverage
# 仅作用于当前tests目录下所有目标的链接参数
LDADD = $(top_builddir)/src/libmylib.la

之后在项目根目录的Makefile.am中添加子目录声明即可:

SUBDIRS = src tests

方案2:单Makefile场景批量赋值

如果不想拆分多目录,所有代码都在同一个目录下维护,可以用GNU Make的模式替换语法,批量给所有测试目标生成对应的配置:

# 你现有的测试列表定义
TESTS = %reldir%/foo\
    %reldir%/bar\
    # 其他测试项

check_PROGRAMS = $(TESTS)

# 批量给所有测试目标设置CFLAGS
$(check_PROGRAMS:%=%_CFLAGS) = -O0 -g --coverage
# 批量给所有测试目标设置链接依赖
$(check_PROGRAMS:%=%_LDADD) = $(top_builddir)/src/libmylib.la

如果你使用的是Automake 1.13及以上版本,还可以用更简洁的内置check_AM_CFLAGS变量,专门作用于所有check类目标:

check_AM_CFLAGS = -O0 -g --coverage

内容的提问来源于stack exchange,提问作者Marcus Harrison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:48:04