我正在对库项目进行自动工具化,并且该项目有一些示例程序。我希望示例程序在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
如您所见,执行“演示”所需的RunDemo脚本未复制到$(builddir)。我尝试了一些操作,例如添加RunDemo
到dist_noinst_SCRIPTS
,以及添加自己的复制目标并尝试钩住all
..无论我尝试什么,我总是得到输出,
$ make RunDemo
make: Nothing to be done for `../../../projects/demo/RunDemo'.
我似乎无法在builddir中创建一个目标,指出“如果此文件不在builddir中,请从srcdir复制它”。
automake有可能吗?
在执行该./configure
步骤之后,可以使用configure.ac脚本中的AC_CONFIG_LINKS
宏(提供了autoconf
)使文件在构建树中可访问。如果可能,它将创建一个符号链接,否则将复制该文件。
在您的情况下,它看起来像
AC_CONFIG_LINKS([demos/RunDemo:demos/RunDemo])
巨集:AC_CONFIG_LINKS(dest:source ...,[cmds],[init-cmds])
使AC_OUTPUT将每个现有文件源链接到相应的链接名称dest。如果可能,进行符号链接,如果可能,进行硬链接,否则进行副本。该DEST和源的名称应该是相对于顶层源或build目录
dist_noinst_SCRIPTS
分发文件仍然需要使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句