2011-04-10 66 views
0

我正在写这个问题的部分基础上related question on helper-scripts在哪里把预制的二进制文件与automake?

我有一个使用autotools构建的C++软件系统。对于它的一小部分功能,我的系统使用一个闭源预构建二进制文件:AMPL。我是一个免费的学生版软件。假设我在C++代码中调用的AMPL二进制文件的名称是ampl-student。我使用system(...)调用从我的代码中运行它。

我想ampl-student被移到/usr/bin以及运行“make install”时编译后的C++代码的二进制文件。我应该在的Makefile.am中添加ampl-student。我应该将它添加到bin_PROGRAMS变量吗?

一个相关的问题是我应该甚至把ampl-student/usr/bin。有没有更适合“辅助二进制”的地方?

我认为这通常是一个坏主意,因为预先编译的二进制文件和代码一起发布并不能保证二进制文件在最终用户的计算机上运行。但是在这种情况下,用户群非常小,我碰巧知道他们都使用相同的系统配置。因此,我们实际上使用deb软件包来保持每个人都更新软件系统的新版本。

编辑1:我要强调的是,问题是首先询问在哪里可以通过自动工具使用的Makefile.am文件中指定ampl-student

回答

5

我在$(pkglibexecdir)安装:

pkglibexec_PROGRAMS = ampl-student 

# If you need to know the path in your code 
AM_CPPFLAGS = -DPKGLIBEXECDIR=\"$(pkglibexecdir)\" 

它不是一个真正的用户程序,所以这个地方安装它的方式。默认情况下,这将是$(prefix)/libexec/$(package)

0

这实际上取决于您是要运送软件,还是要将其本地安装在/ usr/bin中,并且所有用户都将从此处访问该软件。

  1. 如果你打算把它安装在/ usr/bin中,并且你也想把AMPL安装在那里,那么定义一个符号常量到路径中并使用它。
    的#define AMPL的/ usr/bin中/扩增子,学生
    取源文件要使用它,你可以添加,
    系统(AMPL);
  2. 如果您想运送代码的二进制文件,那么您应该将ampl-bin放在软件的bin目录中或创建一个dir。结构:

<您的工具>/src目录
<您的工具>/bin中 - 你可以把扩增子,学生也在这里
<您的工具> /第三方/ <工具1> .... < tooln>/bin /你可以把ampl-student放在这里

正如你在发布ampl-student之前已经正确地提到的那样,它确实适用于工具应该运行的所有平台。

+0

谢谢你的回答。然而,我更想知道为Makefile.am添加哪些内容以便为这些预构建的二进制文件指定一个好位置,以便在运行make install或deb软件包安装在Ubuntu中时,'ampl-student'文件结束了某个地方是有道理的(/ usr/bin是我认为有意义的,但我不确定)。 – 2011-04-11 00:43:16