我正在自动化一个图书馆项目,这个项目有一些示例程序.我希望示例程序在dist中分发,但不安装.
目前,演示程序的组织如下:
src/*.cpp (library source)
include/*.h (library headers)
demos/demo.cpp (example program)
demos/RunDemo (script to run demo)
Run Code Online (Sandbox Code Playgroud)
在构建软件之后运行RunDemo非常重要,无需"安装"步骤.
到目前为止,我已经能够使用noinst_PROGRAMS目标构建"demo"exectuable .但是,make在VPATH构建之后,可以使用以下命令:
build/src/.libs/libxxx.so (etc..)
build/demos/demo
Run Code Online (Sandbox Code Playgroud)
如您所见,执行"demo"所需的RunDemo脚本不会复制到$(builddir).我已经尝试了一些东西,例如,添加RunDemo到dist_noinst_SCRIPTS,以及加入我自己的副本目标,并试图挂钩all.无论我怎么努力,我总是得到输出,
$ make RunDemo
make: Nothing to be done for `../../../projects/demo/RunDemo'.
Run Code Online (Sandbox Code Playgroud)
我似乎无法在builddir中创建一个目标,"如果此文件不在builddir中,则从srcdir复制它".
这可能与automake有关吗?
在./configure使用configure.ac脚本中的AC_CONFIG_LINKS宏(随附autoconf)的步骤之后,您可以在构建树中访问文件 .如果可能,它将创建一个符号链接,否则它将复制该文件.
在你的情况下,它看起来像
AC_CONFIG_LINKS([demos/RunDemo:demos/RunDemo])
Run Code Online (Sandbox Code Playgroud)
宏:AC_CONFIG_LINKS(dest:source ...,[cmds],[init-cmds])
使AC_OUTPUT链接每个现有文件源到相应的链接名称dest.如果可能,建立符号链接,否则为可能的硬链接,否则为副本.该DEST和 源的名称应该是相对于顶层源或建立目录
dist_noinst_SCRIPTS仍然需要使用文件来分发.
| 归档时间: |
|
| 查看次数: |
3193 次 |
| 最近记录: |