如何在Visual Studio中间目录内按子结构生成.o文件?
解决Visual Studio中同名源文件编译输出冲突问题
你遇到的场景是项目包含大量仅靠目录区分的同名源文件,例如:
/src/dir1/file.c /src/dir2/file.c /src/dir3/file.c
编译时会触发以下警告:
warning MSB8027: Two or more files with the name of file.c will produce outputs to the same location.
要实现目标文件按源文件目录结构生成在Visual Studio的中间目录中(如/x64/Debug/dir1/file.o),完全可以通过项目设置实现,步骤如下:
具体操作步骤
- 右键项目,选择「属性」打开项目属性窗口
- 切换到配置属性 → C/C++ → 输出文件选项卡
- 找到「对象文件名」设置项,将默认值改为
$(IntDir)\%(RelativeDir)\%(RelativeDir)是Visual Studio的内置宏,会自动填充当前源文件相对于项目根目录的路径结构
- 点击「应用」后确认,重新编译项目即可
这样设置后,每个同名源文件的目标文件会被生成到对应目录结构的中间文件夹下,彻底避免输出路径冲突,无需手动修改任何文件名。
内容的提问来源于stack exchange,提问作者worstcoderever
相关产品推荐
相关产品推荐

