背景
Visual C++ プロジェクトではデフォルトでソリューションと同じ階層にプラットフォームのフォルダ( Win32 とか x64 とか)や構成フォルダ( Debug とか Release とか)が作られるが、色々構成を切り替えているとフォルダがいっぱいできて鬱陶しかったので bin フォルダを置いてその中に作るようにしたかったのだが、意外とハマったのでメモ。
ファイルの出力先を変更する
今回はソリューションの階層に bin フォルダを置いてその下に従来のファイルを置きたかったので、ファイルの出力先を変えてやればできるだろうと思い、プロジェクトのプロパティから [構成プロパティ]-[リンカー]-[全般]-[出力ファイル] を下記のように変更した。
$(OutDir)$(TargetName)$(TargetExt)
⇒ $(SolutionDir)bin\$(IntDir)$(TargetName)$(TargetExt)
ここ以外にも、下記も同様に変更した。
- [リンカー]-[デバッグ]-[プログラムデータベースファイルの生成]
- [リンカー]-[最適化]-[ガイド付きデータベースのプロファイル]
- [XML ドキュメント ジェネレーター]-[全般]-[出力]
MSB8012 の警告が出る
これでビルドすると下記の警告が発生した。
warning MSB8012: TargetPath(C:\以下略) does not match the Linker's OutputFile property value (C:\以下略). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
出力ディレクトリを変更する
ここでしばらくハマったが、後述の参考サイトを見つけて、 [構成プロパティ]-[全般]-[出力ディレクトリ] を同様に変更することで解決した。