我有一个脚本库存储在.../lib/
中,我想将其嵌入到程序中。到目前为止,这听起来很简单:在Windows上,我将使用Windows资源文件-在MacOS上,我将它们放入Resource
文件夹中,并使用适当的API来访问当前的包及其资源。在普通的Linux上,我不太确定该怎么做...但是,无论如何,我还是想成为跨平台的。
现在,我知道有类似IncBin(event target from the method itself)之类的工具,但是最好用于单个文件。但是,我所拥有的甚至可能需要某种文件系统抽象。
这是我所做的一些猜测和估计。我想知道是否有更好的解决方案-总体而言还是其他解决方案。
char
数组中读取其内容。基本上,通过IncBin运行zip文件,并将其作为缓冲区传递给MiniZ,以便我进行处理。还有其他解决方案吗?谢谢!
答案 0 :(得分:3)
我遇到了同样的问题,我通过相对于argv [0]定位库来解决了这个问题。但这仅在您通过程序的绝对路径调用程序时才有效-即,不是通过外壳程序中的$ PATH调用。因此,我通过〜/ bin中的单行脚本或搜索路径中的任何其他目录来调用程序:
exec / wherever / bin /程序“ $ @”
程序运行时,argv [0]设置为“ / wherever / bin / program”,并且知道在“ / wherever / lib”中查找相关脚本。
当然,如果直接安装到标准位置,则可以依赖标准目录结构,例如/ usr / local / bin / program是可执行文件,/ etc / program是相关脚本和配置文件。上面的技术只是在您希望能够将整个捆绑包安装在任意位置时。