【问题标题】:Build dynamic program list with autotools使用自动工具构建动态程序列表
【发布时间】:2012-11-23 11:37:36
【问题描述】:

我有以下常规(手写)makefile:

all: $(patsubst %.c,%.so,$(wildcard *.c))

%.so: %.c
     $(CC) $(CFLAGS) $(LDFLAGS) -rdynamic -o $@ $^

我需要将此 makefile 转换为自动工具(主要用于用好东西填充 CFLAGS 和 LDFLAGS) 我对 autotools 文档的第一次阅读让我认为这是不可能的,因为 autotools 需要提前知道它的所有目标......但我可能错了。

有什么想法吗?

【问题讨论】:

    标签: c autotools autoconf automake


    【解决方案1】:

    Automake 当然想知道所有的文件名,但是在运行 automake 之前有一个创建 Makefile.am 的引导脚本是很常见的。这是一个相当幼稚的例子:

    #!/bin/sh
    
    cat Makefile.am.head > Makefile.am
    ls *.c | sed 's/$/ \\/' >> Makefile.am
    cat Makefile.am.tail >> Makefile.am
    autoreconf -ivf
    

    请注意,如果您要使用自动工具,您可能不想编写规则来生成 *.so,但应该使用 libtool 和 LTLIBRARIES 主文件。

    【讨论】:

      【解决方案2】:

      类似

      bin_PROGRAMS = program1
      if boolean_flag
          bin_PROGRAMS += program2
      endif
      

      在 Makefile.am 中为我工作(tm)——你只需要弄清楚如何设置标志

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-22
        • 1970-01-01
        • 2018-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多