我有一个 C++ 程序,它在运行时需要打开一些 XML 文件以收集有关系统的配置信息。我正在使用 CMake 来管理构建和部署 (RPM),并试图找出最优雅的方式来处理安装这些 XML 文件并允许我的程序在运行时找到它们。
理想情况下,此解决方案将:
1) 允许程序从 XML 文件驻留在源目录中的构建位置(用于测试/调试模式)运行
2)当程序安装到 /usr 或 /usr/local(或其他)时,XML 文件将安装到 /usr/share/somePath/ConfigFiles/ 并且程序会知道在那里查找它们。
我当前的解决方案是创建一个 config.h.in 文件,该文件定义 XML 文件的源路径和安装路径 (/usr/share/...)。当程序运行时,它检查一个目录,然后检查另一个。有没有更好的方法来处理这个问题,以便程序知道是否执行了“make install”,并且它会确切地知道在哪里可以找到它们而无需检查这两个位置?