TestwindowDlg项目Debug会生成TestwindowDlg.exe,现在我想一套代码生成两个exe,新的叫NewWindow.exe。考虑到两个exe各自的配置文件夹config,为方便生成和调试,Debug和DebugNew的输出目录分为两个目录。
第一步,新建解决方案配置。
新建时“从此处复制设置”选择Debug,DebugNew配置与Debug完全一致,减少很多配置包含目录、库目录、依赖库这些参数配置。
第二步,按需求配置DebugNew。
对于没有特殊修改的项目,为减少编译次数像BaseDLL可以单独设置为Debug,修改生成后事件自动拷贝dll/lib文件。
BaseDLL项目的配置选项删除DebugNew,可以在源代码管理中撤销BaseDLL.vcxproj的签出,或者直接打开BaseDLL.vcxproj删除所有DebugNew节点。
如果现在你想把DebugNew名称换一下,编辑修改解决方案配置中的名称后需要重新打开解决方案,项目上下文里项目的配置才会显示新名称。
2.1 修改目标文件名
配置属性->常规->目标文件名,这里设置新exe名。
2.2 预处理器定义中添加宏
为了代码中区别哪个exe,这里增加宏定义NEWWINDOW。
2.3 检查所有文件的输出路径
正式项目不会像我的例子这么简单直接按默认路径设置,各个输出路径如果有特殊修改的都需要检查一下。像我的正式项目里添加宏定义后,Debug和DebugNew中宏控制的结果不确定,Debug编译提示“warning C4651: 为预编译头,而非为当前编译指定“/DNEWWINDOW””。最后检查发现“预编译头输出文件路径”是“./Debug/$(TargetName).pch”,导致Debug和DebugNew都使用了同一个预编译结果,如果本次没有修改“预处理器定义”,VS就不会重新编译,不管Debug还是DebugNew都找到上一次编译结果。
顺便把所有路径都修改一遍,再也不用担心编译环境问题。