プログラマは0から数える

あまりにも適当に生きすぎたので、何かを残そうと足掻く、そんなBlog

sfml_pragma.hの解説

前回の記事より、sfml_pragma.hの解説。

基本的には#pragmaでcompilerやlinkerに指示を渡しているだけのものなのだが、
これをしないとlinkの段階で自分で対象となるlibをしないといけなくなる。
これを毎回やるのは面倒なので、Visual Studioを使う人は前回のsfml_pragma.hみたいな
便利ファイルを書いてしまうのが良い。

さらに、

#pragma comment( lib, "hoge.lib")

のpragmaはVisual StudioC++compiler向けの物なので、gccなどでは意味の無い命令として解釈される。

具体的には、sfmlではdebug/Releaseとstatic/dynamicとでlibの指定が変わる。
そこで、sfml_pragma.hでは、まず_MSC_VERが定義されているか?
Visual Studioのcompilerかどうかを区別し、さらにその後_DEBUGで
debug用かrelease用かで分岐、最後にSFML_STATICでstaticかdynamicかで
最終的にどのlibとlinkさせればいいのか?を命令する。

ここで重要なのは、前回の様にコードの始めに

#define SFML_STATIC

などが無い場合には、
出来上がった.exeには必要なライブラリーが足りていないので、
.exeと同じフォルダかWindows システム フォルダまたはWindows フォルダに
SFMLのbinフォルダ以下にある.dllがないと動かせない点だろう。


割とopen source系のものでも、この手のメンドイ作業が多いので、
その手のライブラリーを導入するときはVisual Studio向けにだけでも
sfml_pragma.hみたいな物を導入しておくと色々と楽ができるので、割とお勧め。
(有名所のDXlibさんみたいにWindowsのみ対象で、DXlib.hの中に
  この手のセッティングを書いてある事もあるけどね。)