10

我正在自动工具化一个库项目,这个项目有一些示例程序。我希望示例程序在 dist 中分发,但安装。

目前演示程序的组织方式如下:

src/*.cpp (library source)
include/*.h (library headers)
demos/demo.cpp (example program)
demos/RunDemo (script to run demo)

重要的是 RunDemo 在构建软件后可以运行,而不需要“安装”步骤。

到目前为止,我已经能够使用noinst_PROGRAMS目标构建“演示”可执行文件。但是,make在 VPATH 构建之后,以下内容可用:

build/src/.libs/libxxx.so  (etc..)
build/demos/demo

如您所见,执行“demo”所需的 RunDemo 脚本并未复制到 $(builddir)。我已经尝试了一些东西,例如,添加RunDemodist_noinst_SCRIPTS,以及添加我自己的复制目标并尝试挂钩all.. 无论我尝试什么,我总是得到输出,

$ make RunDemo
make: Nothing to be done for `../../../projects/demo/RunDemo'.

我似乎无法在 builddir 中创建一个目标,上面写着“如果此文件不在 builddir 中,请从 srcdir 复制它”。

这可能与自动制作吗?

4

1 回答 1

7

./configure您可以在步骤之后使用configure.ac 脚本中的AC_CONFIG_LINKS宏(随 提供)使文件在构建树中可访问 。autoconf如果可能,它将创建一个符号链接,否则它将复制文件。

在你的情况下,它看起来像

AC_CONFIG_LINKS([demos/RunDemo:demos/RunDemo])

autoconf 手册

宏:AC_CONFIG_LINKS (dest:source..., [cmds], [init-cmds])

使 AC_OUTPUT 将每个现有文件source链接到相应的链接名称dest。如果可能,创建一个符号链接,如果可能,创建一个硬链接,否则创建一个副本。destsource名称应该相对于顶级源或构建目录

仍然需要使用dist_noinst_SCRIPTS才能分发文件。

于 2013-09-30T20:15:27.263 回答