2012-09-03 66 views
1

我目前正在構建一個C++跨平臺遊戲。獲取主程序知道資源的位置(圖像,數據...)

經過一堆谷歌搜索和閱讀各種開源程序的代碼,我仍然無法弄清楚如何在編譯時將絕對路徑傳遞到安裝目錄。

的想法我是要確定對資源的「根」的路徑,讓我訪問的子目錄,例如用於保存/載入數據,圖像等...

我現在有一個典型的開放-source項目組織:

  • 斌/(二進制)
  • 包括/(頭文件)
  • 的src /(來源)
  • 供應商/(外部庫)
  • 資源/(圖像,數據等)
  • 測試/(測試程序)

但我可以怎麼能實現呢? 使用預處理器傳遞一個宏(安裝路徑)也許?

這是一個很好的做法還是有更好的方法來做到這一點?

+0

我得到它的工作使用相對路徑和Unix系統bash啓動腳本尚未找到一個解決方案,但Windows仍然。 –

回答

1

我仍然無法弄清楚如何傳遞到安裝目錄的絕對路徑在編譯時

你不可能知道這一點,事前在編譯時間。你不需要。使用相對路徑,我沒有理由不使用它們。

+0

我擔心的是程序的工作目錄,如果我編譯的程序位於目錄的根目錄下,那麼工作目錄會是程序的目錄(例如,如果我從軟鏈接運行它)? –

1

您需要找出平臺相關時尚的安裝路徑。沒有便攜式的方式。

基本上:

  • 在Windows,使用GetModuleFileNameW()
  • 在MacOS;使用[[NSBundle mainBundle] bundlePath](IIRC,CFBundle變得複雜得多。)
  • on Linux,readlink()你的/ proc/<pid>/exe鏈接,希望你還沒有通過硬鏈接,或者只是硬編碼的路徑,如果你是通過packetmanager無論如何安裝