c++ - 如何在二进制版本中提供资源文件的路径?
问题描述
.xsd
我是一个与XML 验证文件捆绑在一起的库的维护者。目前,用户需要通过设置环境变量来告诉库这些文件所在的位置。我希望能够在该位置进行编译,因为忘记设置环境变量是一个常见问题。
如果您从源代码构建库,我可以这样做。由于构建系统 (CMake) 知道安装路径,因此它可以设置一个预处理器定义,指向 XSD 文件所在的目录。
在分发预编译版本时,这是行不通的,因为构建服务器上的路径不会与用户的路径保持一致。
安装目录结构如下所示:
<install_dir>
- conf/
- foo.xsd
- bar.xsd
- lib/
- mylib.a
在不使用特定于构建服务器的绝对路径的情况下,我如何知道生活mylib.a
在哪里?foo.xsd
解决方案
我假设您知道安装后文件的相对布局(您应该)。
在运行时获取可执行文件的绝对路径(所有操作系统都有这样做的方法)。
然后使用您对文件相对安装位置的了解,构建相对于可执行文件的资源文件路径。
现在使用您构建的路径加载资源。
推荐阅读
- reactjs - npm start 错误:npm start require(...) 不是函数 npm ERR!代码生命周期
- c++ - 在多重继承中使用 std::unique_ptr
- javascript - 如何将范围数据传递给简单的 var 数组?
- entity-framework-core - InvalidOperationException with $top or $skip in OData Expand
- c# - csv文件表名可以与文件名不同吗?在c#中如何
- python-3.x - 为什么我们将valid_input初始化为false并在这个python代码中使用'while not' valid_input
- javascript - 计算购物车内产品的总成本并显示在底部而不是手动输入
- python - 在python中用逗号分隔的现有字符串添加一个新的字符串值
- python - Python - 从星期几、年份和星期数获取日期
- html - 检查第二个 li 元素是否有当前类