linux - Linux/Unix 'make install' 应该由什么组成?

标签 linux unix installation makefile

我已经编写了一个 C++ 程序(命令行、可移植代码),我正试图在发布 Windows 版本的同时发布 Linux 版本。我写了一个 makefile 如下:

ayane: *.cpp *.h
    g++ -Wno-write-strings -oayane *.cpp

到目前为止足够简单;但我知道通常有第二步,进行安装。因此,当我将 install: target 放入 makefile 中时...应该与什么命令相关联? (如果可能的话,我希望它能在所有 Unix 系统和 Linux 上运行。)

最佳答案

安装

一个不那么琐碎的安装程序会将一些东西复制到位,首先确保存在适当的路径(使用 mkdir -p 或类似的)。通常是这样的:

  • 可执行文件进入 $INSTALL_PATH/bin
  • 任何为外部消费构建的库都在 $INSTALL_PATH/lib$INSTALL_PATH/lib/yourappname
  • 手册页放在 $INSTALL_PATH/share/man/man1 中,如果合适,可能还有其他部分
  • 其他文档进入 $INSTALL_PATH/share/yourappname
  • 默认配置文件在 $INSTALL_PATH/etc/yourappname
  • $INSTALL_PATH/include/yourappname
  • 中其他链接的 header

安装路径

INSTALL_PATH 是构建系统的输入,通常默认为 /usr/local。这使您的用户可以灵活地在他们的 $HOME 下安装,而无需提升权限。

在最简单的情况下只需使用

INSTALL_PATH?=/usr/local

在 makefile 的顶部。然后用户可以通过在他们的 shell 中设置环境变量来覆盖它。

卸载

您偶尔还会看到构建 list 以帮助卸载的make install。 list 甚至可以写成脚本来完成这项工作。

另一种方法是使用 make uninstall 来查找 make install 放置的内容,如果存在则将其删除。

关于linux - Linux/Unix 'make install' 应该由什么组成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/528399/

相关文章:

c++ - linux下sem_open返回0

c++ - Qt 5 禁用单击并按住

linux - egrep : find lines with no characters

c++ - 为什么在使用其他库时会出现 LNK4098 冲突 - 尝试在 MSVS2010 Express 中编译 C++ 时?

c - 如何将 char* 转换为 UTF-8 编码的 char*?

linux - 在 If 语句中使用 grep 获取所有项目,忽略空格

php - fopen+fwrite 比 shell_exec 快吗?

由于环境损坏而导致 c system() 语法错误

CMake WORLD_WRITE 权限不适用于 INSTALL

r - conda 安装R 3.4.0