1

現在、C++ クロスプラットフォーム ゲームを構築しています。

さまざまなオープンソース プログラムのコードをグーグルで調べたり読んだりした後でも、コンパイル時にインストール ディレクトリへの絶対パスを渡す方法がわかりません。

私が考えていたのは、リソースの「ルート」パスを設定して、たとえばデータや画像などを保存/ロードするためにサブディレクトリにアクセスできるようにすることでした...

私は現在、典型的なオープンソース プロジェクト組織を持っています。

  • bin/ (バイナリ)
  • include/ (ヘッダーファイル)
  • src/ (ソース)
  • vendor/ (外部ライブラリ)
  • resources/ (画像、データなど...)
  • tests/ (テストプログラム)

しかし、どうすればこれを実装できますか? プリプロセッサを使用してマクロ (インストール パス) を渡しますか?

これは良い習慣ですか、それともこれを行うためのより良い方法はありますか?

4

2 に答える 2

1

プラットフォームに依存する方法でインストールパスを把握する必要があります。ポータブルな方法はありません。

基本的に:

  • Windowsでは、GetModuleFileNameW()を使用します
  • MacOSで; [[NSBundle mainBundle] bundlePath]を使用します(IIRC、CFBundleは非常に複雑になります。
  • Linuxでは、/ proc / <pid> / exeリンクをreadlink()し、ハードリンクを介して起動されていないことを願っています。または、とにかくパケットマネージャを介してインストールする場合は、パスをハードコーディングします。
于 2012-09-03T19:34:14.480 に答える
1

コンパイル時に絶対パスをインストール ディレクトリに渡す方法がまだわかりません。

コンパイル時に事前に知ることはできません。そして、あなたはする必要はありません。相対パスを使用してください。使用しない理由はありません。

于 2012-09-03T19:20:16.690 に答える