1.5 CMakeでSFMLをコンパイルする





翻訳者から:この記事は、公式のSFMLライブラリガイドの翻訳サイクルの5番目です。 過去の記事はこちらにあります。 この一連の記事の目的は、元の言語を知らない人にこのライブラリに慣れる機会を提供することです。 SFMLは、シンプルでクロスプラットフォームのマルチメディアライブラリです。 SFMLは、ゲームやその他のマルチメディアアプリケーションを開発するためのシンプルなインターフェイスを提供します。 元の記事はこちらにあります 始めましょう。



目次:
0.1はじめに



1.はじめに



  1. SFMLとVisual Studio
  2. SFMLとコード::ブロック(MinGW)
  3. SFMLおよびLinux
  4. SFMLとXcode(Mac OS X)
  5. CMakeでSFMLをコンパイルする


2.システムモジュール



  1. 時間処理
  2. ストリーム
  3. ユーザーデータストリームを操作する


3.ウィンドウモジュール



  1. ウィンドウを開いて管理する
  2. イベント処理
  3. キーボード、マウス、ジョイスティックを使用する
  4. OpenGLを使用する


4.グラフィックモジュール



  1. 2D描画オブジェクト
  2. スプライトとテクスチャ
  3. テキストとフォント
  4. フォーム
  5. 頂点配列を使用して独自のオブジェクトを設計する
  6. 位置、回転、スケール:オブジェクトの変換
  7. シェーダーで特殊効果を追加する
  8. 2Dカメラとビューコントロール


5.オーディオモジュール



  1. サウンドと音楽を再生する
  2. オーディオ録音
  3. カスタムオーディオストリーム
  4. 空間化:3Dサウンド


6.ネットワークモジュール



  1. ソケット通信
  2. パッケージの使用と拡張
  3. HTTPを使用したWeb要求
  4. FTPファイル転送




エントリー



この記事のタイトルは誤解を招く可能性があります。 CMakeはコンパイラではないため、CMakeでSFMLをコンパイルしません。 それでは、CMakeとは何ですか?



CMakeは、ソースコードからソフトウェアを構築するためのクロスプラットフォーム自動化システムです。 SFMLをビルドする代わりに、SFMLがコンパイルするもの(Visual Studioソリューション、コード::ブロックプロジェクト、Linuxメイクファイル、Xcodeプロジェクトなど)をコンパイルします。 実際、任意のオペレーティングシステムまたはコンパイラ用のアセンブリファイルまたはプロジェクトファイルを生成できます。 CMakeはautoconf / automakeまたはpremakeに少し似ています。



CMakeは、Blender、Boost、KDE、Ogreなどの多くのプロジェクトで使用されています。 CMakeの詳細については、 公式Webサイトまたはウィキペディアのページをご覧ください



ご想像のとおり、この記事は2つのパートに分かれています。





依存関係のインストール



SFMLはいくつかのライブラリに依存しているため、開始する前にそれらを満足させる必要があります。



WindowsおよびMac OS Xでは、すべてのSFML依存関係が付属しているため、何もダウンロード/インストールする必要はありません。 アセンブリはそのまま使用できます。



ただし、Linuxでは、事前に依存関係が満たされていないため、すべての依存関係をインストールする必要があります。 SFMLをビルドする前に満たす必要がある依存関係のリストを次に示します。





異なるディストリビューションのこれらのパッケージの名前は異なる場合があります。 それらをインストールした後、開発者用のヘッダーファイルをインストールすることを忘れないでください。



SFMLアセンブリの構成



このステップでは、プロジェクト/アセンブリファイルを作成し、最終的にSFMLをコンパイルします。 通常、この手順は、アセンブリの目的、アセンブリの方法、およびアセンブリの場所を選択することで構成されます。 ニーズに合わせてビルド構成ファイルを作成できる他のオプションがいくつかあります。 このトピックについては、以下で詳しく検討します。



最初に選択する必要があるのは、プロジェクト/アセンブリファイルとオブジェクトファイル(コンパイルプロセス中に取得されたファイル)が作成される場所です。 ソースツリー(つまり、SFMLルートディレクトリ)で生成することもできますが、これにより、ルートディレクトリがオブジェクトファイルやその他のゴミで汚れてしまいます。 最善の解決策は、それらを別のフォルダーに生成することです。これにより、SFMLルートディレクトリをクリーンに保つことができます。 別のディレクトリを使用すると、複数のアセンブリ(静的、動的、デバッグ、リリースなど)の使用にも役立ちます。



ビルドディレクトリを選択したので、CMakeを実行する前に実行する必要があるもう1つのことがあります。 CMakeは、プロジェクトを構成するときに、使用可能なコンパイラを探します(必要に応じて、バージョンを確認します)。 このため、CMakeの起動時にコンパイラー実行可能ファイルが使用可能でなければなりません。 これはMac OS XとLinuxでは問題になりません。コンパイラは標準パスにインストールされており、常に使用可能ですが、WindowsではコンパイラディレクトリへのパスをPATH環境変数に追加してCMakeが自動的に検出できるようにする必要があります。 これは、複数のコンパイラーまたは同じコンパイラーの複数のバージョンがインストールされている場合に特に重要です。



Windowsでは、GCC(MinGW)を使用する場合、一時的にMinGW \ binディレクトリにパスを追加してから、コマンドラインからCMakeを実行できます。



> set PATH=%PATH%;your_mingw_folder\bin > cmake -G"MinGW Makefiles" ./build
      
      





Visual C ++では、[スタート]メニューからアクセスできるVisual StudioコマンドラインからCMakeを実行するか、コンソールでVisual Studioインストールの.batファイルvcvars32.batを実行するだけで、.batファイルはコンソールのすべての環境変数を設定します。あなた。



 > your_visual_studio_folder\VC\bin\vcvars32.bat > cmake -G"NMake Makefiles" ./build
      
      





これでCMakeを実行できます。 実際、それを実行するには3つの方法があります。





この記事では、cmake-guiを使用します。このオプションは初心者が使用する可能性が高いためです。 コマンドラインを使用している人はCMakeのドキュメントを参照するものと想定しています。 スクリーンショットとボタンを押すための指示を除いて、以下で説明するものはすべてコマンドラインにも適用できます(オプションなど)。



CMake GUIは次のようになります。







実行する必要がある最初の手順は次のとおりです。





このディレクトリで初めてCMakeを起動する場合(または以前の起動で残ったキャッシュをクリアした場合)、CMake GUIはジェネレータを選択するように求めます。 言い換えれば、コンパイラ/ IDEを選択してください。







Visual Studio 2010を使用している場合は、ドロップダウンリストから「Visual Studio 10 2010」を選択する必要があります。 Visual Studio NMakeのビルドファイルを生成するには、「NMake Makefiles」を選択します。 MinGW(GCC)のビルドファイルを生成するには、「MinGW Makefiles」を選択します。 原則として、アセンブリファイルを使用してSFMLをコンパイルする方が簡単です。1つのコマンドを使用してライブラリ全体をアセンブルしたり、複数のアセンブリを1つのスクリプトにグループ化することもできます。 SFMLをビルドする予定で、ライブラリのソースコードを編集したくない場合は、IDEプロジェクトは適していません。



さらに重要なことは、Xcodeジェネレーターではインストールプロセス(以下で説明)が機能しないことです。 このため、Mac OS Xでビルドする場合はMakefileジェネレーターを使用することを強くお勧めします。



「デフォルトのネイティブコンパイラを使用する」オプションが有効になっているかどうかを常に確認してください。 残りの3つのオプションは変更できません。



ジェネレーターを選択すると、CMakeは一連のテストを実行して、ツールボックスに関する情報を収集します:コンパイラー、標準ヘッダーファイル、SFML依存関係など。 テストが成功すると、「構成が完了しました」というメッセージが表示されます。 問題が発生した場合は、エラーテキストを注意深く読んでください。 これは、コンパイラが使用できないか、正しく構成されていない場合、またはSFML依存関係の1つが満たされていない場合に発生する可能性があります。







構成が完了すると、ウィンドウの中央にアセンブリオプションが表示されます。 CMakeには多くのオプションがありますが、それらの多くは正しいデフォルト値に設定されています。 それらのいくつかはキャッシュ変数であり、変更しない方が良いです。



これらは、SFMLアセンブリを構成するときに決定する可能性があるオプションの一部です。

パラメータ 価値
CMAKE_BUILD_TYPE このパラメーターは、収集する構成のタイプを設定します。 「Debug」および「Release」キーを受け入れます(「RelWithDebInfo」や「MinSizeRel」など、受け入れられる他のキーがありますが、より高度なアセンブリ用です)。

多くの構成(たとえばVisual Studio)をサポートするIDEのジェネレーターを使用する場合、アセンブリには同時に複数の構成を含めることができるため、このパラメーターは無視されることに注意してください。

CMAKE_INSTALL_PREFIX



インストールするパス。 デフォルトでは、特定のオペレーティングシステムの最も一般的なインストールパスにインストールされます(LinuxおよびMac OS Xの場合は「/ usr / local」、Windowsの場合は「C:\ Program Files」など)。 アセンブリ後にSFMLをインストールすることはオプションです;アセンブリが実行されたディレクトリから直接バイナリファイルを使用できます。 ただし、SFMLをインストールすることをお勧めします。

CMAKE_INSTALL_FRAMEWORK_PREFIX( Mac OS X)



フレームワークがインストールされるパス。 デフォルトでは、これはライブラリのルートフォルダーです。 /ライブラリ/フレームワーク。 CMAKE_INSTALL_PREFIXと同様に、このパラメーターは必須ではありませんが、システムをクリーンに保つために推奨されます。 LD_FRAMEWORKSオプションが選択された場合、このパスはsndfileフレームワーク(Appleが提供していない依存関係)およびSFMLフレームワークのインストールにも使用されます。

BUILD_SHARED_LIBS



このブール型パラメーターは、SFMLを動的(共有)ライブラリーとして構築するか、静的ライブラリーとして構築するかを決定します。

このオプションはSFML_USE_STATIC_STD_LIBSと同時に有効にしないでください。これらは相互に排他的です。

SFML_BUILD_FRAMEWORKS( Mac OS X)



このブールパラメータは、SFMLをフレームワークとして構築するか、 バイナリダイナミックライブラリとして構築するかを決定します。 フレームワークを構築するには、BUILD_SHARED_LIBSパラメーターを定義する必要があります。

製品を公開するときは、フレームワークとしてSFMLを使用することをお勧めします。 SFMLはフレームワークとしてデバッグ構成にコンパイルできないことに注意してください。 デバッグ構成でSFMLを使用する必要がある場合は、ダイナミックライブラリとして使用します。

SFML_BUILD_EXAMPLES



このブール型パラメーターは、SFMLの使用例をライブラリでコンパイルするかどうかを決定します。

SFML_BUILD_DOC



このブールパラメータは、SFMLドキュメントを生成するかどうかを決定します。 Doxygenをインストールして使用可能にする必要があります。そうしないと、このオプションを有効にするとエラーが発生します。

Mac OS Xでは、古典的なUnix doxygenを/ usr / binまたは同様のディレクトリにインストールするか、Doxygen.appをアプリケーションディレクトリにインストールできます。 〜/アプリケーション。

SFML_USE_STATIC_STD_LIBS ( Windows)



このブール型パラメーターは、SFMLがリンクされるC / C ++ランタイムライブラリのタイプを選択します。

パラメータがTRUEに設定されている場合、標準のコンパイラライブラリで静的リンクが発生します。 その結果、SFMLは自己完結型になり、動的ライブラリから独立します。

パラメーターがFALSE(標準)に設定されている場合、標準ライブラリとの動的リンクが発生します。 その結果、SFMLはコンパイラdll(Visual C ++の場合はmsvcrxx.dll / msvcpxx.dll、GCCの場合はlibgcc_s_xxx-1.dll / libstdc ++-6.dll)に依存します。 このオプションを設定するときは注意してください。 設定は、独自の設計と一致する必要があります。 このオプションは、BUILD_SHARED_LIBSと同時に有効にしないでください。

CMAKE_OSX_ARCHITECTURES( Mac OS X)



このパラメータは、どのSFMLアーキテクチャを構築する必要があるかを示します。 推奨値は、「i386; x86_64」で、両方のアーキテクチャのユニバーサルバイナリを生成します。

SFML_INSTALL_XCODE_TEMPLATES( Mac OS X)



このブール型パラメーターは、CMakeがシステムにXcodeテンプレートをインストールするかどうかを決定します。

ディレクトリ/ Library / Developer / Xcode / Templates / SFMLが存在し、書き込み可能であることを確認してください。

これらのテンプレートの詳細については、 Mac OS XでのSFMLのインストールに関する記事を参照してください。

SFML_INSTALL_PKGCONFIG_FILES(Linux共有ライブラリのみ) このブールパラメータは、CMakeがシステムにpkg-configファイルをインストールするかどうかを決定します。 pkg-configは、インストールされたライブラリを照会するための統一されたインターフェースを提供するツールです。



すべての設定が完了したら、「設定」ボタンをもう一度クリックします。 オプションは赤で強調表示されず、「生成」ボタンが使用可能になります。 それをクリックして、アセンブリ/プロジェクトファイルを永続的に生成します。







CMakeは、プロジェクトごとに変数キャッシュを作成します。 そのため、後で何かを再構成することにした場合、以前の構成の設定が保存されていることがわかります。 必要な変更を行い、新しいアセンブリ/プロジェクトファイルを再構成して生成します。



C ++ 11およびMac OS X



Mac OS XアプリケーションでC ++ 11機能を使用する場合は、clang(Appleの公式コンパイラー)とlibc ++を使用する必要があります。 さらに、これらのツールを使用してSFMLをコンパイルし、SFMLライブラリとコンパイラ間の非互換性を排除する必要があります。



clangおよびlibc ++を使用してSFMLを構築するときに使用する必要がある設定:











SFMLアセンブリ



良いニュースから始めましょう。SFMLの作業コピーを更新している場合でも、セットアップフェーズを実行する必要はありません。 CMakeはスマートです。アセンブリ/プロジェクトファイルを生成するカスタムステップを追加します。つまり、これらのファイルは修正なしで再生成されます。



これで、SFMLをコンパイルできます。 もちろん、これを行う方法は、生成したもの(アセンブリファイルまたはプロジェクト)によって異なります。 プロジェクト/ソリューション/ワークスペースが生成されている場合は、IDEでそれを開き、SFMLを他のプロジェクトのようにコンパイルします。 開発環境が多すぎるため、詳細には触れません。 IDEの使用方法を知っていること、およびこの簡単なタスクを自分で完了することができることを前提としています。



メイクファイルを生成した場合は、コマンドプロンプトを開き、環境に合わせてmakeコマンドを実行します。 たとえば、NMakeビルドファイル(Visual Studio)を生成した場合は「nmake」、MinGW(GCC)メイクファイルを生成した場合は「mingw32-make」、Linuxメイクファイルを生成した場合は単に「make」。



注:Windowsでは、makeプログラム(nmakeまたはmingw32-make)が使用できない場合があります。 その場合、必ずその場所をPATH環境変数に追加してください。 詳細については、「SFMLアセンブリの構成」セクションを参照してください。



デフォルトでは、プロジェクトをビルドすると、すべてがコンパイルされます(SFML_BUILD_EXAMPLESオプションを設定した場合、すべてのSFMLライブラリとSFMLの使用例)。 特定のSFMLライブラリまたはライブラリを使用する特定の例をビルドする場合、異なるビルド目標を選択できます。 また、ビルドディレクトリをクリーンアップし、適切なビルド目標を使用して収集したファイルをインストールすることもできます(インストールおよびクリーンアップ)。



以下は、構成中に選択したオプションに応じて、使用可能なすべてのアセンブリターゲットです。



目的 価値
all



デフォルトのターゲット。 アセンブリターゲットが指定されていない場合に使用されます。 すべてのターゲットがアセンブルされ、その使用によりバイナリファイルが生成されます(SFMLライブラリとサンプル)。
sfml-system

sfml-window

sfml-network

sfml-graphics

sfml-audio

sfml-main




適切なSFMLライブラリを構築します。 sfml-mainターゲットは、Windowsのビルドでのみ使用可能です。
cocoa

ftp

opengl

pong

shader

sockets

sound

sound-capture

voip

window

win32

X11




関連するSFMLサンプルを作成します。 これらの目標は、 SFML_BUILD_EXAMPLES



パラメーターがSFML_BUILD_EXAMPLES



いる場合にのみ使用できます。 一部のターゲットは特定のオペレーティングシステムでのみ利用可能です(「cocoa」はMac OS Xでのみ利用可能、「win32」はWindowsでのみ利用可能、「X11」はLinuxでのみ利用可能など)。
doc



APIドキュメントの生成。 このターゲットは、 SFML_BUILD_DOC



パラメーターがSFML_BUILD_DOC



いる場合にのみ使用できます。
clean



前のビルド中に作成されたすべてのオブジェクトファイル、ライブラリ、および例を削除します。 ほとんどの場合、SFMLを再構築する場合を除き、この目的でアセンブリを呼び出す必要はありません(ソースコードを更新する場合、一部のファイルは既存のオブジェクトファイルと互換性がない可能性があり、この問題に対する唯一の解決策です)。
install



SFMLをCMAKE_INSTALL_PREFIX



またはCMAKE_INSTALL_FRAMEWORK_PREFIX



指定された標準パスに設定します。 SFML_BUILD_EXAMPLES



およびSFML_BUILD_DOC



パラメータが設定されている場合、すべてのライブラリとSFMLヘッダーファイル、および例とドキュメントがコピーされます。 インストール後、SDKをダウンロードしたか、ディストリビューションのパッケージリポジトリからSFMLをインストールしたかのように、読みやすいSFMLディストリビューションが取得されます。




IDEを使用している場合、目標は単なるプロジェクトです。 目標を収集するには、適切なプロジェクトを選択してコンパイルします(完了するには、「クリーン」と「インストール」もアセンブルする必要があります。ソースコードがコンパイルされないという事実に混乱しないでください)。 アセンブリファイルを使用する場合、ターゲットの名前をmakeコマンドに渡して、ターゲットをビルドします。 たとえば、nmake doc、mingw32-make install、make sfml-networkなどです。



これで、SFMLが正常に構築されました。 おめでとうございます!



次の記事: 時間処理



All Articles