的AM_LDADD
变量的等效简直是LDADD
。例如,
LDADD = -llibrary
test1_SOURCES = ...
...
test20_SOURCES = ...
如果你需要重写LDADD
特定程序:prog
,然后prog_LDADD
总是会优先。
我一直认为,因为没有LDADD
标准的环境变量传递给configure
- 因为你可以看到configure --help
- 有一个AM_LDADD
没有真正的理由。这种情况很有意义,因为configure
脚本以及任何选项(例如--with-foo=<path>
)都应该(理想情况下)计算出库依赖关系。
在另一方面,通过CFLAGS
通过configure
可能仍然需要一个AM_CFLAGS
结合CFLAGS
与配置脚本确定的其他编译器标志;或者甚至覆盖一个foo_CFLAGS
。由于configure
必须通知您的自定义CFLAGS
。
另外,我不知道如果test<n>
程序只需要一个C++源文件,但如果是这样,你可以用简化Makefile.am
:
LDADD = -llibrary
check_PROGRAMS = test1 test2 ... test20
AM_DEFAULT_SOURCE_EXT = .cC# or .cpp
描述here。
在问候你的评论,你可以使用一个convenience library用于这一目的 - 这是通过测试程序使用的代码特别有用:
noinst_LIBRARIES = libfoo.a # or noinst_LTLIBRARIES = libfoo.la
libfoo_a_SOURCES = MyClass.hh MyClass.cc # or libfoo_la_SOURCES
LDADD = ./libfoo.a -llibrary # or libfoo.la if using libtool.
... etc ...
感谢您的最后一个技巧,不幸的是,测试需要测试类和原始类,如何处理任何想法? – 2015-03-25 12:40:35
@ VicenteAdolfoBoleaSanchez - 是的,有一个简单的方法 - 我会添加到答案。你是否在你的软件包中使用'libtool'? – 2015-03-25 12:45:55
不是真的只是一个静态库文件(.a),它是第三方库,所以我不想修改它。 – 2015-03-25 12:47:36