我如何在二进制发行版中提供资源文件的路径?

问题描述 投票:1回答:1

我是.xsd文件随附的库的维护者,用于XML验证。当前,用户需要通过设置环境变量来告知库这些文件在何处。我希望能够在该位置进行编译,因为忘记设置环境变量是一个常见问题。

如果您是从源代码构建库,我可以这样做。由于构建系统(CMake)知道安装路径,因此只需设置指向XSD文件所在目录的预处理器定义即可。

关于分发预编译的发行版,这将不起作用,因为构建服务器上的路径不会与用户的路径一致。

安装目录结构如下:

<install_dir>
    - conf/
      - foo.xsd
      - bar.xsd
    - lib/
      - mylib.a

如何在不使用特定于构建服务器的绝对路径的情况下告诉mylib.afoo.xsd的位置?

c++ cmake resources install
1个回答
1
投票

我假设您知道安装后文件的相对布局(您应该)。

在运行时获取可执行文件的绝对路径(所有操作系统都有这样做的方式)。

然后使用您对文件相对安装位置的了解,构造一个相对于可执行文件的资源文件路径。

现在使用您构建的路径加载资源。

© www.soinside.com 2019 - 2024. All rights reserved.