私はかなり新しいC++プログラマーです。私はSDLライブラリを使って非常に単純なゲームを作った。私のゲームは自然に、いくつかの画像、音、フォントを使用します。私はパッケージの配布をしたいと思っていました。どこにユーザが設定できるのですか& & make。このシンプルなゲームは価値のあるものではありませんが、私はautoconfとautomakeの仕組みを学びたいと思っています。私はインターネットの周りの例を探しましたが、私が見つけることができるチュートリアルでは単純なhelloworldプログラムのインストールしか示していません。彼らは、データファイルのインストールについても、特定のライブラリが存在するかどうかをチェックして、コンパイル時にリンクすることができるようにする方法についても言及していません。また、私のプログラムは、各ファイルがロードされるように各ファイルがどこにインストールされるのかを知っている必要があります。私はautomakeとautoconfのマニュアルを掘り下げましたが、彼らは新しい人のためのリソースであるよりも参考資料のようなものです。誰でもこの概念を簡単に説明することができますか、私がそれらについて読むことができるいくつかの場所に私を導いてくれますか?GNUのautoconfとautomakeでデータファイルをパッケージ化する方法
6
A
答えて
13
私はこれについていくつかの研究を行いましたが、私が働いていることを分かち合いたいと思っています。私はこのようなディレクトリ構造を作成しました:
/
|->src/
| |-> Makefile.am
| |-> main.cpp
| |-> functions.cpp
|
|-> data/
| |-> Makefile.am
| |-> somethings.png
| |-> something.mp3
|-> configure.ac
|-> README
|-> NEWS, AUTHORS etc. etc.
私はすべての画像、フォント、サウンドなどをデータフォルダに入れました。データフォルダーのMakefile.amは以下のようになります。
pkgdata_DATA = esound.wav \
another.wav \
apicture.png
それは単にデータディレクトリに終わることに必要なすべてのファイルが一覧表示されます。 srcフォルダ内Makefile.amは、次のようになります。ここ
bin_PROGRAMS = mygame
mygame_SOURCES = main.cpp functions.cpp
AM_CPPFLAGS = -DDATADIR=\"$(pkgdatadir)\"
重要な部分は、configureスクリプトに渡されたオプションに従って、DATADIRマクロを定義するAM_CPPFLAGS、です。それでは、私たちはこのような私たちのソースファイルでこのマクロを使用することができます。
background = load_image(DATADIR "/background.png");
背景ファイルがファイルシステムに常駐する場所をあなたのプログラムが知ってコンパイルされますように。
+0
配布する場合は、dist_pkgdata_DATAを使用する必要がありますか? –
関連する問題
- 1. autoconf/automakeを非標準パッケージに向ける方法
- 2. SUIDとしてインストールするAutomake/autoconf設定
- 3. automake + autoconfの品質ガイドとビルドプロセスの他の複雑さ?
- 4. automakeとautoconfを使ったダイナミックライブラリを含む
- 5. TarballをMavenとパッケージ化する方法
- 6. 条件付きでプログラム(テストなど)をビルドするためにautomakeとautoconfをセットアップするには
- 7. サポートファイルをカカオアプリケーションにパッケージ化する方法
- 8. Javaファイルをパッケージ化する方法
- 9. Drupal 7で高度なアクションとトリガーを 'パッケージ化'する方法
- 10. データベースと私のandroidアプリケーションをパッケージ化する方法
- 11. autoconfで#defineの値を指定する方法は?
- 12. ウェブサーバー上でのデータファイルの格納方法
- 13. なぜautoconf/automakeプロジェクトは、ローカル開発ライブラリの代わりにインストールされたライブラリとリンクしますか?
- 14. Valaプロジェクトのautoconf/automakeメークファイルを自動的に生成するターミナルツールはありますか?
- 15. sqliteデータファイルを暗号化
- 16. マゼンタモジュールのパッケージ化 - エクステンションキーオプションの取得方法
- 17. Pythonスクリプトでモジュールをパッケージ化する方法
- 18. OSX 10.7でRuby靴アプリをパッケージ化する方法
- 19. extjs 4アプリケーションのパッケージ化(ミニサイズ)方法
- 20. ユニバーサルWindowsプラットフォームをターゲットとするマルチアーキテクチャの.NETライブラリをパッケージ化する方法は?
- 21. Juliaパッケージのデータファイルと絶対パスまたは相対パス
- 22. 大きなプロジェクトのautoconf/configureを高速化する
- 23. GNU GCCコンパイラの最適化とデバッグ
- 24. GNU binutils(objdump)のインストール方法/インストール方法
- 25. Qt Creator、Symbian - 複数のアプリケーションをパッケージ化する方法?
- 26. OSXのElectronにカスタムアイコンをパッケージ化する方法
- 27. バグのボックスにファイルをパッケージ化する方法は?
- 28. PBSSettingパッケージ内のPolySetデータをサブセット化する方法は?
- 29. 2サードパーティのDLLをパッケージ化する方法
- 30. コマンドラインJavaプロジェクトをパッケージ化する最良の方法
私は、autoconf/automakeを使う最良の方法は、自分のプロジェクトと似ているプロジェクトを見つけ出し、それが何であるかを見て、そこから文書化することです。 –
John Calcoteの著書「Autotools:GNU Autoconf、Automake、Libtoolのプレゼンサーガイド」 –
を参照してください。[Goat Book](http://sourceware.org/autobook/)を読んでください。オートツール。彼らには、オートツールで最も一般的なことを行う方法を示すさまざまな複雑さのプロジェクト例がいくつかあります。 – ldav1s