同じソースで違うプロジェクトで使わないコードを変える

less than 1 minute read

Tags: , , , ,

投稿日:

どういうときに必要なのか

たとえば
いくつかのバージョンの dll とか lib とかがほしいとき。

たとえば
lib だけでいいんだけど、
それを使ってスタティックリンクしたいプロジェクトがいくつかあって、
しかし、それらプロジェクトのビルド設定が違うのでそれらにスタティックリンクする lib のビルド設定も合わせる必要があるとき

それはたとえば c++ と c++/cx だったりする。

ちなみに uwp で c++ と c++/cx を使ってさらにスタティックリンクもするのはビルド時に非推奨的なメッセージがでた。でたけどできる。

そういうときにそれぞれで使わないコードとかでてくることがある。

c++ と c++/cx をつかっていると
c++ コード -> c++/cx コード移植とかよくあると思うのだけど、
そういうときにほとんどそのまま使えるから同じコードでビルド設定違うとかあるあるなの

あと、無料版 有料版 とか作りたいときに同じコードだと楽だと思うんだけど。
一箇所修正すると複数プロジェクトに反映されるの素敵。
複雑に構造、依存だと使えないかもだけど。

同じコードで使わないコード部分を変えるには

プロジェクト設定の
たとえば
c/c++ -> プリプロセッサ定義
ここに使う使わないを左右するフラグになる定義をいれる。

するとそのコードは同じでも
#define されるものが違うので条件分岐ができる。
あとは #ifndef とかでどういうときに使うコードか書いておく。

弱点

使う使わないが複雑になると
ifdef とかがややこしくなるし可読性も良くない。
よりよい方法があればぜひ教えてください。

追記

同じソースで同じプロジェクトでも同じことはできるよ。 構成マネージャで新しい構成を追加してしまえば
そのときのプロジェクト設定が設定できるからね。

twitter で blog 更新を自動投稿してるんだけどそれでこの構成追加のこと教えてもらって、
自分があんまり構成追加を使ってなかったから書いてなかったけど構成追加のほうがよくある手法なのかもしれないです。

Comments