我是.xsd
文件随附的库的维护者,用于XML验证。当前,用户需要通过设置环境变量来告知库这些文件在何处。我希望能够在该位置进行编译,因为忘记设置环境变量是一个常见问题。
如果您是从源代码构建库,我可以这样做。由于构建系统(CMake)知道安装路径,因此只需设置指向XSD文件所在目录的预处理器定义即可。
关于分发预编译的发行版,这将不起作用,因为构建服务器上的路径不会与用户的路径一致。
安装目录结构如下:
<install_dir>
- conf/
- foo.xsd
- bar.xsd
- lib/
- mylib.a
如何在不使用特定于构建服务器的绝对路径的情况下告诉mylib.a
在foo.xsd
的位置?
我假设您知道安装后文件的相对布局(您应该)。
在运行时获取可执行文件的绝对路径(所有操作系统都有这样做的方式)。
然后使用您对文件相对安装位置的了解,构造一个相对于可执行文件的资源文件路径。
现在使用您构建的路径加载资源。