2009-08-12
完全同名.cppファイルのコンパイル
検索ワード:ゾンビ状態
えーとー セガ本
(ゲームプログラマになるために覚えておきたい技術)
を読み返して、ちょこちょこ試していたんですが。
サンプルは通るのに自分でやると通らない話。
- Sequence
|-Parent.cpp
|-Parent.h
|+Game
||-Parent.cpp
||-Parent.h
↑のファイル構成そのままだと絶対コンパイルが通らない。
何故かっつーと、コンパイラは同名の.cppファイルがあると
生成する.objファイルの名前がかぶるため、
1ファイルしかコンパイルできないから。
おかしいなぁなんでサンプルは通るんだろうおかしいなぁ。
と思ってサンプルプロジェクトをよく見てみたら、仕掛けがあった。
コンパイルを通したいファイルを選択
→プロパティ
→→"ファイル.cpp"のプロパティページ
→→→C/C++
→→→→出力ファイル
→→→→→オブジェクトファイル名
→→→→→→「$(IntDir)\$(InputName)1.obj」と入力
といった作業をファイル1個1個に仕込んでいたというわけで。
これ忘れるとコンパイル通らない+プロジェクトの度に設定
ってのが気が滅入る。
あとしばらく使っていて、ファイル名が完全に一致していると
自分がどっちを編集しているか混乱するという様なこともあったので、
今後はおとなしくファイル名のほうをいじって柔軟に対応しようと思う。
・・・あれ?
昔作ったプロジェクトで、自動でオブジェクト名解決してあるんだけど・・・。
インクルードパス
プロジェクトのプロパティ
->構成プロパティ
->C/C++
->全般
->追加のインクルード ディレクトリ
ここに
$(ProjectDir);
を追加すると、プロジェクトのトップディレクトリからの相対パスが
通るようになる。常にやっといて○。
boost導入
http://www.kmonos.net/alang/boost/
インストール→フォルダをパス通す
でboost使えるようになった 導入は時間かかったけど。
てことで自分が書いたプログラムが
boost導入者にしか読めないものになった。あちゃーー