我正在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中)。
我很欣赏有关此问题的任何建议。 提前致谢
答案 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 前缀开头。