让主程序知道资源的位置(图像,数据......)

时间:2012-09-03 19:15:50

标签: c++ installation cross-platform c-preprocessor

我目前正在构建一个C ++跨平台游戏。

经过一堆谷歌搜索和阅读各种开源程序代码后,我仍然无法弄清楚如何在编译时将绝对路径传递给安装目录。

我的想法是为资源设置“根”路径,允许我访问子目录,例如保存/加载数据,图像等......

我目前有一个典型的开源项目组织:

  • bin /(二进制文件)
  • 包含/(标题文件)
  • src /(sources)
  • vendor /(外部库)
  • 资源/(图片,数据等......)
  • 测试/(测试程序)

但我怎么可能实现这个呢? 使用预处理器传递宏(安装路径)可能吗?

这是一个好习惯还是有更好的方法来做到这一点?

2 个答案:

答案 0 :(得分:1)

  

我仍然无法弄清楚如何在编译时将绝对路径传递给安装目录

在编译期间你不可能事先知道它。你不需要。使用相对路径,我认为没有理由不使用它们。

答案 1 :(得分:1)

您需要以平台相关的方式确定安装路径。没有便携的方式。

基本上:

  • 在Windows上,使用GetModuleFileNameW()
  • 在MacOS上;使用[[NSBundle mainBundle] bundlePath](IIRC,CFBundle最终变得更加复杂。
  • 在Linux上,readlink()你的/ proc /< pid> / exe链接,希望你没有通过硬链接启动。或者只是对路径进行硬编码,如果你是通过数据包管理器安装的话。