2011-05-03 36 views
2

我正在使用C++中的简单命令行工具。一半是有趣的学习过程,一半是分发给朋友/同事等。简单C++命令行工具的安装脚本,教程?

我假设让它可分发的最简单方法就是用源代码打包安装脚本---任何人都可以指向我一个很好的教程来设置它? 换句话说,一个脚本必须包含哪些内容来编译程序,将这些文件放在适当的位置*,并使其可以从命令行的任何目录执行?

    • 例如我知道编译后的二进制文件应该放在/ usr/local/bin /中,但是如果我正在写入并访问文本文件(例如),那么应该去哪里?那么存储设置/配置参数的文件呢?

我在Mac OSX上,所以这将是起点,但便携性的Windows,Linux等将是巨大的。

+0

最适合Windows的是使用像Innosetup这样的安装程序,位于http://www.jrsoftware.org/isinfo.php – 2011-05-03 19:51:21

回答

1

不要假定安装该程序的用户具有root用户访问权限。提示或提供命令行选项,如--install-prefix =/home/user/apps,以指定安装位置。

I HATE在/ usr/local中安装shit的程序。如果你这样做,你最好把它包装成.rpm或.deb或任何平台包,这样你的应用程序就可以完全卸载了。

我建议检查出autoconf

+0

我的印象(注意:只有一个印象)是,configure,make等最终只是坚持编译二进制到usr/local和任何其他文件到他们所属的任何地方。因为我的程序非常简单(几个文件,几百行代码),我认为所有这些都是不必要的。 这些东西是否可以轻松卸载? 你不希望安装到/ usr/local的东西的动机是什么? – DilithiumMatrix 2011-05-03 20:07:25

+0

autoconf让你指定--install-prefix,它为你的应用程序提供了一个根,它是配置文件。通常,当我部署依赖于定制实用程序的应用程序时,我总是将它们放在一起。这样我总能看到我添加的依赖关系。如果我迁移到新的主机,我不会错过任何东西。现在我需要像Puppet或cfEngine这样的部署平台来硬编码这些依赖项,所以也许这只是17年的灌输和习惯? – 2011-05-03 20:15:51

+0

它自己的autoconf不会执行“打包”卸载。这是一个rpmbuild或任何debian等价物。 – 2011-05-03 20:16:39

2

您可以使用CMake做一个跨平台的构建系统,你可以使用它的CPackWiki here)功能,以生成二进制包只是。首先,您创建一个构建脚本,在每个平台上运行并安装(CMake使其变得尽可能容易)。然后运行CPack生成一个包含你的二进制文件的包。

有一个很好的教程,涵盖了基本的cmake过程(包括安装命令)here

CMake通常被认为更简单,然后autoconf(并有更好的Windows支持),但每个都有自己的优势。