読者です 読者をやめる 読者になる 読者になる

saLibrary

趣味プログラムの記録

プロジェクト作成

VisualStudioのプロジェクト作成と設定まで。

gitの準備ができたのでプロジェクト作成してみます。

VisualStudio2017を起動。
デフォルトだとソリューションエクスプローラーが右側にでるのですが、左側に表示されるように変更しました。
f:id:sacky003:20170506122704p:plain:w300
なんでしょうね、これに慣れちゃったんでしょうね。

== 閑話休題 ==
昔はVisualStudioの設定はかなり拘っていて、1日かけてまで文字の表示色やら色々弄ってましたが、
最近はもうテーマ濃色のデフォルトでいいや。って感じです。
複数バージョンのVisualStudioを触る場合にいちいち設定変更してられないし、
他人のPCでVS触る場合もたまにあるのでデフォルトで慣れちゃった方が楽かなと思いました。
フォントはConsolas、ソリューションエクスプローラーは左側、これくらいは楽なので設定します。

VSの設定はさておき、プロジェクトを新規作成します。
Win32プロジェクトとして作成。
64bitが当たり前の時代なのに学生時代と変わらずWin32プロジェクトとはクラシカルでございますね。
これってあってるのかな?

名前は「saLibrary」にします。
真っ新な状態がいいので、プリコンパイル済みヘッダーも使用しない設定にします。
f:id:sacky003:20170506124402p:plain:w300
必要になったら、最低限何が必要なのか理解した上で自分で追加したいので真っ新な状態がいいです。
なんとなく動いている状態は避けたい。
といいつつ、なんとなく動いている状態になっちゃう事もありますけど。

プロジェクトが出来上がったらいったん閉じて、フォルダ名を整理。
プロジェクトファイルは
「workingdir > develop > library > build > visualstudio > saLibrary_for_Windows」
に配置。
f:id:sacky003:20170506125101p:plain:w300

buildディレクトリは文字通り「ビルドするやつら」置き場。
visualstudioディレクトリは文字通り「VisualStudioでビルドするやつ」。
昔作ってたライブラリは
WindowsはVisualStudio、AndroidはEclipseでビルドしていたんですが、それぞれのプロジェクトファイルを同じディレクトリに置いていました。
するとそれぞれのプロジェクトが生成する中間ファイルや成果物などが同じ所に置かれて、色々とカオスになってしまいました。
このフォルダ/ファイルはVS、Eclipseどっちのやつ?と面倒な事になったので、
今回はソースコードとビルドするやつらを分離してみます。
ただ、今やAndroidもVisualStudioでビルドできるそうなので必要なかったかもしれませんね。

プロジェクトができたら、ビルドの構成を追加します。
Releaseをコピーして「Master」を追加しました。
DebugとReleaseは開発用、Masterは開発用機能を除いた最終版、みたいな意味合いです。

ソリューション構成ができたらプロパティシートを追加します。
プロパティシートを使えば各種構成/プラットフォームで共通の設定が可能になります。
まぁ、正直プロパティシートはあまり詳しくないので勉強の為に使ってみる感じです。
プロパティマネージャーからプロジェクトを選択して「新しいプロパティシートの追加」を選択。
名前は「saLibrary.props」とします。
これで全構成にsaLibraryプロパティシートが追加されます。
とりあえずビルドしたときの成果物の名前と出力先を編集したいので、saLibrary.propsを編集します。
f:id:sacky003:20170506132911p:plain:w300


出力先を_outputディレクトリ以下に生成されるように変更。
f:id:sacky003:20170506132508p:plain:w300
_output以下に指定するのはgitの無視リストに指定しやすいようにする為です。
てか変数の結果をプレビューしてくれるのめっちゃ便利。
同じように中間ファイルも_output以下に変更。
f:id:sacky003:20170506132554p:plain:w300
中間はさらにintermidiateディレクトリを掘ってみました。
特に意図はないです。
ターゲット名はビルド構成とプラットフォーム名を付与するように変更。
f:id:sacky003:20170506132654p:plain:w300
理由はデバッグ版とリリース版で同じ名前のものが生成されると混乱するからです。

さて、ソリューションエクスプローラーに戻って、プロジェクトのプロパティを見てみます。
f:id:sacky003:20170506133305p:plain:w300
ちゃんと出力先やターゲット名が変わっていますね。

プロパティシートを使う以前は
全構成/全プラットフォームをいちいち選択してちまちまと設定していたのですが、
プロパティシートを使うと一つのプロパティシートを弄るだけで全部変わってくれて便利ですね。
また、今後新しい構成が増えてもその構成に共通のプロパティシートを追加するだけで設定が完了しますし、
設定がpropsファイルで独立しているのでバージョン管理的にも差分が見やすいですし。
なにこれすばらしい。良い事しかないじゃないですか。

今度からはDebug/Release/Masterで設定が異なる場合でも
プロジェクトファイルのプロパティを弄るのではなく、専用のプロパティシートを追加して弄るべきなんでしょうか。
使うべき場合、使う場合の設定の粒度が気になる所です。

ひとまず、develop.propsとmaster.propsを追加し、
developにはプリプロセッサの定義に「_DEVELOP」「DEVELOP」を追加、
masterにはプリプロセッサの定義に「_MASTER」「MASTER」を追加しておき、
develop.propsをDebugとReleaseに、master.propsをMasterに追加しました。
この、プリプロセッサの定義だけでプロパティシートを使う運用は正しいのか気になりますが、まぁこれで良しとします。

この段階で適当にソースファイルを追加してビルドしてみます。
f:id:sacky003:20170506135041p:plain:w300
ちゃんと_ouput以下に色々生成されてました。まぁ当り前ですね。
地味に、インテリセンスなどデータベースファイル等は.vs以下に生成されるようになったんですかね。
以前はvcxprojと同階層にあったpchファイルやsuoファイル等が無くなっています。
VisualStudio2015からか2017からかはわかりませんが、バージョン管理的には.vs以下だけを無視すればいいので楽ですね。

はい、今回はここまで。
未だにプログラムしてませんが、まぁのんびり進みます。