首页 > 解决方案 > 如何在二进制版本中提供资源文件的路径?

问题描述

.xsd我是一个与XML 验证文件捆绑在一起的库的维护者。目前,用户需要通过设置环境变量来告诉库这些文件所在的位置。我希望能够在该位置进行编译,因为忘记设置环境变量是一个常见问题。

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

在分发预编译版本时,这是行不通的,因为构建服务器上的路径不会与用户的路径保持一致。

安装目录结构如下所示:

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

在不使用特定于构建服务器的绝对路径的情况下,我如何知道生活mylib.a在哪里?foo.xsd

标签: c++cmakeresourcesinstallation

解决方案


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

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

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

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


推荐阅读