c++ - 将带有 automake 的预构建二进制文件放在哪里?

标签 c++ packaging autotools automake ampl

我写这个问题部分是基于 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/

相关文章:

autotools - Libtool 缓慢,双重构建?

c++ - 为什么 autotools 在一台机器上创建 project-File.o,在另一台机器上创建 File.o?

c++ - 从带空格的 std::stringstream 中提取流

c++ - 如果 MFC RUNTIME_CLASS 参数具有命名空间,则编译器错误

c++ - 如何使 '<?=' 可用于 C++?

packaging - 用pynsist打包PyGObject Python 3程序?

c++ - 使用-xipo -xO4构建时发生c++崩溃

python - 分发 python 命令行工具的最佳方式是什么?

javascript - 在 Django 项目中使用 JavaScript 的最合适的方式是什么?

autotools - Autoconf——包括一个静态库(新手)