AC_CONFIG_FILES不生成Makefile

时间:2014-08-20 02:31:57

标签: makefile autotools

我正在Vala中编写一个支持插件的应用程序。该应用程序具有以下目录结构:

data/
    [data files]

m4/
    my_project.m4

plugins/
    example/
        example.plugin.in
        example-plugin.vala
        Makefile.am
po/
src/
    [source files]

文件“my_project.m4”使用一个名为MYPROJ_ADD_PLUGIN的简单定义函数来添加插件目录,并且在我使用其他一些项目进行测试时它工作正常。基本上,它称之为:

AC_CONFIG_FILES([plugins/example/Makefile])
[...]
AC_CONFIG_FILES([plugins/example/example.plugin])

问题是,当我尝试配置它时,它会返回:

"error: cannot find input file: `plugins/example/Makefile.in'"

示例makefile(plugins / example / Makefile.am)如下:

include $(top_srcdir)/common.am

plugin_LTLIBRARIES = example-plugin.la
plugin_DATA = example.plugin

example_plugin_la_SOURCES = \
    example-plugin.vala

example_plugin_la_VALAFLAGS = \
    $(MYPROJ_COMMON_VALAFLAGS) \
    --target-glib=2.38

example_plugin_la_CFLAGS = \
    $(MYPROJ_COMMON_CFLAGS) \
    -I$(srcdir) \
    -DG_LOG_DOMAIN='"Example"'

example_plugin_la_LIBADD = \
    $(MYPROJ_COMMON_LIBS)

example_plugin_la_LDFLAGS = \
    $(MYPROJ_PLUGIN_LINKER_FLAGS) \
    -lm

EXTRA_DIST = example.plugin.in

正确生成每个var(在common.am和configure.ac中)。

我很欣赏有关此问题的任何建议。 提前致谢

1 个答案:

答案 0 :(得分:0)

看起来我找到了自己问题的答案。显然,我所要做的就是添加一个" lib"我的插件输出文件的前缀。插件/ example / Makefile.am现在看起来像:

include $(top_srcdir)/common.am

plugin_LTLIBRARIES = **lib**example.la
plugin_DATA = example.plugin

**lib**example_la_SOURCES = \
    example-plugin.vala

**lib**example_la_VALAFLAGS = \
    $(MYPROJ_COMMON_VALAFLAGS) \
    --target-glib=2.38

**lib**example_la_CFLAGS = \
    $(MYPROJ_COMMON_CFLAGS) \
    -I$(srcdir) \
    -DG_LOG_DOMAIN='"Example"'

**lib**example_la_LIBADD = \
    $(MYPROJ_COMMON_LIBS)

**lib**example_la_LDFLAGS = \
    $(MYPROJ_PLUGIN_LINKER_FLAGS) \
    -lm

EXTRA_DIST = example.plugin.in

这是我做过的唯一修改,现在按预期工作。看起来像autoconf / autotools对插件和共享库的语法非常严格,因为它们必须以 lib 前缀开头。