【发布时间】:2015-04-18 13:41:00
【问题描述】:
我正在为我的项目集成 C 检查框架并且我能够运行
autoreconf --install
成功,没有任何错误。
但是当我集成 C 检查框架时,我收到了一个没有意义的错误和警告。
这是我遇到的错误
src/Makefile.am:7: warning: variable 'main_LDADD' is defined but no program or
src/Makefile.am:7: library has 'main' as canonical name (possible typo)
tests/Makefile.am:2: error: 'SHELLTESTS_PROGRAMS' is used but 'SHELLTESTSdir' is undefined
tests/Makefile.am:3: warning:variable 'ShellTests_SOURCES' is defined but no program or
tests/Makefile.am:3: library has 'ShellTests' as canonical name (possible typo)
tests/Makefile.am:5: warning: variable ShellTests_LDADD' is defined but no program or
tests/Makefile.am:5:library has 'ShellTests' as canonical name (possible typo)
autoreconf:automake failed with exit status: 1
我遵循了 C 检查示例源代码,这与我的项目之间的区别在于我的类使用了其他类的方法。
无论如何,这是我的测试下的 Makefile.am/正在对构建项目造成“破坏”
TESTS = shelltests
SHELLTESTS_PROGRAMS = shelltests
ShellTests_SOURCES = ShellTests.c $(top_builddir)/src/Shell.h $(top_builddir)/src/Parser.h $(top_builddir)/src/JobControl.h
ShellTests_CFLAGS = @CHECK_CFLAGS@
ShellTests_LDADD = $(top_builddir)/src/libshell.la @CHECK_LIBS@
这是我的项目的文件结构
源代码 -
Parser.h、Parser.c、Shell.h、Shell.c、Job.h、Job.c、Makefile.am
测试 -
ShellTests.c Makefile.am
这是 src 下 Makefile.am 中的代码。
lib_LTLIBRARIES = libshell.la
libshell_la_SOURCES = Shell.c Shell.h Parser.h Parser.c JobControl.h JobControl.c
bin_programs = main
main_sources = Main.c
main_LDADD = libshell.la
我按照此用户的建议查看它是否消除了错误:What directory should I use for "error: 'extra_PROGRAMS' is used but 'extradir' is undefined"? 唉,事实并非如此。
我已经尝试构建示例项目 - 当您在示例下下载时获得的项目,看看我是否遗漏了任何东西。但它无法在我的机器上构建。
我使用的是 Mac OS X Mavericks (10.9)
- Autoconf 2.69
- Automake 1.15
- Libtool 2.4.6
- 检查 0.9.14
【问题讨论】:
-
更新:我尝试运行示例目录以查看项目是否在我的机器上成功构建(我应该做的事情,我只是假设它可以在任何机器上工作)。在添加了他们的示例构建日志告诉我要做的事情之后。我在自己的项目上运行 ./configure 时遇到错误 - 这是没有检查集成:配置:错误:在“。”中找不到 install-sh、install.sh 或 shtool “./..” “./../..” 我正在向 c-check 组发送一张票。
-
已经有一段时间了,但我似乎记得 Automake 文件中的字母大小写是不同的。例如,您键入了
bin_programs,而它应该是bin_PROGRAMS。此外,由于您正在构建多个测试,您可能希望使用check_PROGRAMS += shelltests而不是check_PROGRAMS = shelltests,其中check是目标名称(例如make check)。我不确定 install-sh 的东西。我的猜测是关于 install-sh 等的错误。是错误的,是由于配置不正确造成的。我之前在使用 Autotools 构建系统时遇到过奇怪的错误。 -
@ChronoKitsune,我会试试你的建议。不幸的是,我在他们的示例中遇到了关于 install-sh 的构建错误,这里有更多信息:Check framework example giving me error when running './configure'