1

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

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

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

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

  • bin/(二进制文件)
  • 包含/(头文件)
  • src/(来源)
  • 供应商/(外部库)
  • 资源/(图像、数据等...)
  • 测试/(测试程序)

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

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

4

2 回答 2

1

我仍然不知道如何在编译时将绝对路径传递给安装目录

您不可能在编译期间事先知道它。你不需要。使用相对路径,我看不出你为什么不使用它们。

于 2012-09-03T19:20:16.690 回答
1

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

基本上:

  • 在 Windows 上,使用 GetModuleFileNameW()
  • 在 MacOS 上;使用 [[NSBundle mainBundle] bundlePath] (IIRC,CFBundle 最终要复杂得多。
  • 在 Linux 上, readlink() 你的 /proc/<pid>/exe 链接,希望你没有通过硬链接启动。或者只是硬编码路径,如果你是通过包管理器安装的话。
于 2012-09-03T19:34:14.480 回答