visual studio 解决方案和项目配置问题

如何优雅的在visual studio2022 做练习

问题概述

想学习一些C++的基础语法以及数据结构和算法,该如何使用visual studio创建项目呢?一个解决方案如何包含多个项目?build输出的文件杂乱找不到想要的文件?这是遇到的一些问题,这节课需要解决这些问题。

创建一个项目

image-20260129191232399

image-20260129191318567

image-20260129191546762

这里创建一个空的C++项目,注意这里解决方案和项目放同一目录不打勾

image-20260129192012626

这里左边框中的三个文件其实是过滤器,实际上并不存在,你删了也可以,不会对后续造成影响。我们可以右键ex1这个项目,在文件资源管理器中打开文件夹查看,里面其实只有下面三个文件。

image-20260129192047854


文件说明

文件 / 文件夹 核心作用 是否可删 说明
ex1.vcxproj 编译配置 ❌ 不可删 项目就打不开,不要手动修改
ex1.vcxproj.filters 内文件可视化分类 ✅ 可删 删了仅文件显示杂乱,不影响编译,会自动再生
ex1.vcxproj.user 用户个性化调试配置 ✅ 可删 删了丢失个人断点 / 工作目录,会自动再生

我们可以点击解决方案资源管理器的显示所有文件(下图中紫色的框,就在小扳手左边)显示实际的文件结构,可以发现是空的,因为我们创建的就是空项目。

image-20260129192134623

现在我们右键添加新建文件夹就是实际的文件夹,不然在筛选器的那种模式下添加的就是筛选器的文件夹了。

我们新建一个src文件夹并写一个"hello world"吧。编译运行后:

image-20260129193746407

image-20260129193949240

可以看到它会在D:\CodeLearning\learn_cpp\cpp_ch01\这个解决方案文件夹下,x64平台,Debug模式,链接器会生成一个exe文件。当然还有一些中间文件会生成在项目文件夹下x64/Debug/中。

image-20260129194252301

#include <iostream>

int main()
{
	std::cout << "hello,world" << std::endl;
	return 0;
}

我们一般不会按照这种默认配置,因为这使得我们的程序的中间文件和最终的输出文件分离开了。

目前结构输出

|--- solutionDir/

​ |--- project1/

​ |--- x64

​ |--- Debug

​ |--- .obj etc 中间文件

​ |--- project2/

​ |--- x64

​ |--- Debug

​ |--- .obj etc 中间文件

​ |--- x64

​ |--- Debug

​ |--- project1.exe

​ |--- project2.exe

​ |--- .sln(解决方案)

我们需要修改一下输出目录和中间目录,让其可以满足以下形式,让输出的文件在解决方案的bin文件夹下,里面区分项目的输出和项目的中间文件。

|--- solutionDir/

​ |--- project1/

​ |--- project2/

​ |--- bin

​ |--- project1

​ | --- project1.exe(bin\project1\x64\Debug)

​ |--- project2

​ | --- project2.exe(bin\project2\x64\Debug)

​ |--- intermediates

​ |--- project1

​ |--- project2

​ |--- .sln(解决方案)

我们需要在项目的属性中做如下配置。

输出目录:$(SolutionDir)bin\$(ProjectName)\$(Platform)\$(Configuration)\

中间目录:$(SolutionDir)bin\intermediates\$(ProjectName)\$(Platform)\$(Configuration)\

image-20260129200851733

这样我们生成的文件输出和中间文件就在bin文件夹中了,而且区分了项目名。

为多个项目名统一配置

那后面创建新项目的时候还要右键属性对项目进行手动输入配置吗?

那肯定是不用的

我们可以在解决方案的文件夹中新建一个Directory.Build.props,然后输入以下配置。

<Project>
  <PropertyGroup>
    <OutDir>$(SolutionDir)bin\$(MSBuildProjectName)\$(Platform)\$(Configuration)\</OutDir>
    <IntDir>$(SolutionDir)bin\intermediates\$(MSBuildProjectName)\$(Platform)\$(Configuration)\</IntDir>
  </PropertyGroup>
</Project>

image-20260129201111406


再这之后的新建项目都是我们期望的输出形式了,很清爽的形式。

posted @ 2026-01-29 20:18  wenyiGamecpp  阅读(5)  评论(0)    收藏  举报