我对一个程序进行了更改,该程序是使用Intel Performance Primitives的更大项目的一部分。事实证明,我最近的更改使用的呼叫仅在最新版本的IPP上可用,而许多用户仍使用旧版本。有问题的程序并不重要,所以我想让它成为可选项,而不是反向移植到最老版本的IPP(多年来IPP已经进行了大量的API更改)。
我们使用automake / autoconf生成Makefile。理想情况下,我的特定程序(C中的单个源文件)默认情况下不会被编译,除非有人专门运行“make myprog”。
有没有办法做到这一点,还是我必须支持配置脚本的“--with-myprog”选项?
Makefile.am目前有(我认为这是相关的)
bin_PROGRAMS = \
stripVDIF \
{snip}
generateVDIF
generateVDIF_SOURCES = \
generateVDIF.c
generateVDIF_LDADD = $(IPP_LIBS) $(LDADD)
我的程序是生成VDIF
答案 0 :(得分:1)
如果您不希望安装它,则可以简单地将其声明为locale.selected_locale
而不是EXTRA_PROGRAMS
,并且应该完全符合您的要求(仅适用于bin_PROGRAMS
)。< / p>
如果您希望安装它,则必须在make myprog
中使用AC_ARG_WITH
和AM_CONDITIONAL
,然后再使用
configure.ac
其余的保持不变。
答案 1 :(得分:0)
正确这样做的方法是放置可选项的构建
程序在./configure
选项的控制下,以便./configure
可以适当地管理它。参见例如how to add configure options
如果这听起来太辛苦了,你可以利用这个事实
make
中的其他Makefile.am
代码只会传递给
生成Makefile
。
所以,例如如果以下是目标Makefile.am
的{{1}}:
foo
并且您想添加一个非托管目标EXTRA_DIST = README
bin_PROGRAMS = foo
foo_SOURCES = foo.c
,一个由bar
构建的程序,
然后你可以将bar.c
扩展为:
Makefile.am
自动缩减的软件包将支持EXTRA_DIST = README bar.c
bin_PROGRAMS = foo
foo_SOURCES = foo.c
bar: bar.o
$(CC) $(LDFLAGS) -o$@ $< $(LDLIBS)
,您可以记录这一事实
对于用户而言,有适当的警告 - 特别是包括缺少通常自动调整的make bar
和install
。
显然,这种捷径会减损知识渊博的用户的印象 你的专业印章。