我写这个问题部分是基于 related question on helper-scripts .
我有一个用 autotools 构建的 C++ 软件系统。对于它的一小部分功能,我的系统使用了一个封闭源代码的预构建二进制文件:AMPL .我是他们软件的免费学生版。假设我从 C++ 代码中调用的 AMPL 二进制文件的名称是 ampl-student
。我使用 system(...)
调用在我的代码中运行它。
我希望在运行“make install”时将 ampl-student
连同我编译的 C++ 代码的二进制文件一起移动到 /usr/bin
。我应该在 Makefile.am 的什么地方添加 ampl-student
。我应该将它添加到 bin_PROGRAMS
变量吗?
一个相关的问题是我是否应该将 ampl-student
放在 /usr/bin
中。有没有更合适的地方放置“辅助二进制文件”?
我认为这在一般情况下是个坏主意,因为将预构建的二进制文件与代码一起分发并不能保证二进制文件将在最终用户的计算机上运行。但在这种情况下,用户群很小,而且我碰巧知道他们都在使用相同的系统配置。所以我们实际上是在使用 deb 包作为让每个人都了解软件系统新版本的一种方式。
编辑 1: 我应该强调,问题首先是询问在 Makefile.am 中的何处指定 ampl-student
autotools 使用的文件。
最佳答案
我会把它安装在 $(pkglibexecdir)
中:
pkglibexec_PROGRAMS = ampl-student
# If you need to know the path in your code
AM_CPPFLAGS = -DPKGLIBEXECDIR=\"$(pkglibexecdir)\"
它不是一个真正的用户程序,所以这会将它安装在某个地方。默认情况下,这将是 $(prefix)/libexec/$(package)
。
关于c++ - 将带有 automake 的预构建二进制文件放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5615469/