VS2019新建项目、解决方案、多项目生成、防止文件污染

VS2019新建项目、解决方案、多项目生成、防止文件污染

0-更新时间

2020.12.16 防止文件污染

之前因为刷题,多多少少用过一点VS2019,但是因为用惯了Jetbrains公司的IDE,所以一直在用Clion。希望通过这一次学习,能够熟练使用VS2019.

1-新建项目

首先就是新建项目,是下面的界面

我们一般会使用空项目控制台应用这两个,空项目是最常用的,里面没有任何源程序。控制台应用通常没有可视化界面,就是单纯的通过字符串来显示或监控程序,里面会自己包含一些示例代码。控制台应用的用户往往只关心数据,不关心界面。

参考:【使用vs编译程序选择新建”空项目“与”win32控制台应用程序“的区别。】

https://blog.youkuaiyun.com/u013409439/article/details/45274291

点击空项目后,进入配置项目界面,如下

在这里插入图片描述

一开始不太清楚【解决方案】和【项目】的区别,查阅资料后才知道:在VS中,新建项目时会默认创建同名的解决方案。

项目其实就是程序的容器,这种程序就是编写出来为了实现这个项目的最终目的(比如计算银行利息)。某个项目的所有文件都存储在相应的项目文件夹中,关于**项目的详细信息存储在一个扩展名为.vcproj的xml文件中,该文件同样存储在相应的项目文件夹中。**项目文件夹还包括其它文件夹,它们用来存储编译及链接项目时所产生的输出。

解决方案就是存储与一个或多个项目有关的所有信息的文件夹,这样就有一个或多个项目文件夹是解决方案文件夹的子文件夹。**与解决方案中项目有关的信息存储在扩展名为.sln和.suo的两个文件中。**当创建某个项目时,如果没有选择在现有的解决方案中添加该项目,那么系统将自动创建一个新的解决方案。

参考:visual C++ 项目和解决方案的区别

也就是说,一个项目必然是会在一个解决方案内,一个解决方案内至少包括一个项目

上面图中,【位置】栏里,D:\CodeProject\CppProject这个路径其实是解决方案的路径,如果在上图中点击【创建】按钮,VS2019会在该路径中新建一个Project1的文件夹(解决方案文件夹,默认与创建的项目同名)。在D:\CodeProject\CppProject\Project1的路径下,还有一个Project1文件夹(项目文件夹)。

如果先修改【项目名称】,那么最后一栏的【解决方案名称】也会变化,但是直接修改【解决方案名称】的话,【项目名称】是不会变的。

如果选择【将解决方案和项目放在同一目录下】,那么【解决方案名称】就会变灰。

2-防止文件污染

当创建项目成功后,就会进入IDE,很迷惑上面栏里DebugReleasex64x86是什么东西。

在这里插入图片描述

经过查询以后才知道:

DebugRelease只是两个编译的选项而已,是编译器所要进行工作的一系列指令,它们只是编译指令的集合的名称。

Debug允许对源码进行调试,而Release则不对源码进行调试。Debug和Release,主要是针对其面向的目标不同的而进行区分的。Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。而Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信 息,同时,它往往进行了各种优化,以期达到代码最小和速度最优,为用户的使用提供便利。

x64x86它们之间最直接的区别就是:x86平台编译出来的exe(可执行文件)或dll(动态链接库)都是32位的。以此类推,x64对应的则是64位的。

参考:VC++中debug跟release编译模式的区别总结

关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别

根据以上情况,编译模式(DebugRelease)和平台选择(x64x86)相互搭配以后就是4种组合,每一次生成解决方案都会生成两个文件夹,比如当前编译器选择Debugx64,在这种模式下,就会按照默认的输出目录$(SolutionDir)$(Configuration)\ 生成一个Configuration文件夹,其中SolutionDir是当前解决方案的路径,Configuration代表当前的编译模式。在默认中间目录$(Configuration)\ 中保存日志和临时文件。也就是说,会在解放方案文件夹内,以及项目文件夹内,都产生一个Debug文件夹。

那么在查找文件时,就容易弄混哪里是中间文件,哪里是工程文件。

下面,来修改一下输出目录与中间目录的保存路径。

点击【解决方案资源管理器】中的项目,右键选择【属性】,在这里就能修改输出目录与中间目录的保存路径。注意修改的时候,在上面的【配置】与【平台】两栏中一定选择【所有配置】、【所有平台】。这样就不用区分两两搭配的四种情况了。

在这里插入图片描述

【输出目录】修改为:$(SolutionDir)../bin/$(Platform)/$(Configuration),表示在解决方案目录的上一级目录中设置bin文件夹,如果没有该文件夹会自动创建,将输出文件、核心程序(就是exe文件)放到bin目录里,同时按照Platform(x64x86)来新建文件夹,并且在平台文件夹再根据编译模式(DebugRelease)再分别建立文件夹。

【中间目录】修改为:$(SolutionDir)../temp/$(Platform)/$(Configuration)/$(ProjectName),表示在解决方案目录的上一级目录中设置temp文件夹,temp文件夹下按照平台再分,每个平台文件夹下按照编译模式再分文件夹,最后在每个配置文件夹下新建当前项目的独立文件夹。

为什么不在【输出目录】中也设置$(ProjectName)产生独立项目文件夹呢?就是因为,在同一解决方案下不同项目【生成】后,各自项目的输出文件以自己项目名称来命名,易于区分,如下图所示,HelloCpp和HelloWorld都属于同一解决方案。

在这里插入图片描述

3-多项目生成解决方案

当一个解决方案里有多个项目时,就要设置谁作为启动项目了。设置为启动项目的项目会被粗体表示。想要更换启动项目,直接选中另一个项目,右键【设为启动项目】,这样操作以后,再右键【生成】才是自己项目的文件

时,就要设置谁作为启动项目了。设置为启动项目的项目会被粗体表示。想要更换启动项目,直接选中另一个项目,右键【设为启动项目】,这样操作以后,再右键【生成】才是自己项目的文件

在这里插入图片描述

<think>好的,我现在需要回答用户关于是否应该使用conda激活项目环境后再运行pip install命令的问题。用户之前询问了关于在cmd中运行pip install -U huggingface_hub的问题,现在想知道是否需要使用conda环境来执行这个命令。 首先,我要回顾之前的对话。用户可能已经了解如何在普通cmd中使用pip安装包,但现在他们可能在使用conda管理环境,所以想知道正确的步骤。用户的问题核心在于确认是否需要激活conda环境,以及这样做的好处。 接下来,我需要明确conda环境和pip的关系。Conda是一个包和环境管理器,可以创建独立的环境来避免依赖冲突。使用conda环境确实是一个好的做法,尤其是在处理项目时。用户可能已经有一个现有的conda环境,或者需要新建一个。 我需要分步骤解释,包括如何创建conda环境(如果用户没有的话)、激活环境、然后运行pip命令。同时,可能需要解释为什么推荐使用环境,比如依赖隔离、版本控制等。此外,还要提到如果用户没有使用conda,也可以用venv等其他工具,但根据用户的问题,重点在conda。 另外,用户可能对conda命令不熟悉,所以需要给出具体的命令示例,比如conda create, conda activate等。同时,要确保用户知道在激活环境后,pip安装的包只会影响当前环境,不会干扰系统或其他环境。 可能还需要对比直接使用系统环境和使用conda环境的优缺点,强调隔离的重要性,尤其是在项目需要特定版本的包时。同时,如果用户遇到权限问题,使用conda环境可以避免需要sudo或管理员权限。 另外,要检查是否有常见的conda使用问题需要提前提醒,比如激活环境时可能出现的错误,或者conda和pip混合使用时可能出现的依赖冲突。建议用户优先使用conda安装包,如果不可行再用pip,这样可以更好地管理依赖。 最后,确保回答结构清晰,分步骤说明,让用户能够一步步操作,并理解每一步的目的。可能还需要补充一些验证步骤,比如安装后如何检查环境中的包是否正确安装,或者如何退出环境等。</think>### 分步解析 Conda 环境与 pip 安装的关系 #### **1. Conda 环境的核心作用** ```bash # 环境隔离核心价值 ✓ 防止不同项目依赖冲突(如:项目A需要numpy 1.0,项目B需要numpy 2.0) ✓ 避免污染系统Python环境 ✓ 支持版本Python共存(如:环境1用Python 3.8,环境2用Python 3.11) ``` #### **2. 是否需要激活环境** ```diff + 必须激活环境的情况: - 系统中存在个Python解释器 - 已有其他项目存在版本冲突记录 - 需要严格复现他人环境配置 - 可以不激活的情况: + 全新设备首次安装 + 仅做临时测试使用 + 已确认全局环境无冲突 ``` #### **3. Conda 环境操作全流程** ```bash # 创建新环境(Python版本可选) conda create -n hf_env python=3.9 # 激活环境(不同系统命令不同) conda activate hf_env # Windows/macOS/Linux通用 # 验证环境状态(观察路径变化) which python # Linux/macOS where python # Windows # 执行安装(此时pip属于当前环境) pip install -U huggingface_hub # 退出环境 conda deactivate ``` #### **4. Conda与pip混合使用原则** ```markdown 1. **优先使用conda安装**: ```bash conda install huggingface_hub # 如果官方仓库有提供 ``` 2. **混合安装时注意顺序**: - 先conda安装基础依赖 - 再用pip补充安装 3. **避免破坏性操作**: ```bash # 错误示范(可能导致环境崩溃) pip install --force-reinstall numpy # 覆盖conda安装的numpy ``` ``` #### **5. 环境验证矩阵** | 验证项目 | 合格标准 | 检测命令 | |---------|----------|----------| | Python路径 | 显示`envs/环境名`路径 | `which python` | | 包安装位置 | 位于conda环境目录下 | `pip show huggingface_hub` | | 依赖树 | 无版本冲突警告 | `pip check` | #### **6. 环境管理技巧** ```bash # 查看所有环境列表 conda env list # 克隆环境配置 conda create --clone hf_env --name hf_backup # 导出环境配置 conda env export > environment.yml # 根据yml文件重建环境 conda env create -f environment.yml ``` #### **7. 常见问题解决方案** ```bash # 问题:conda环境激活失败 解决方案:初始化conda conda init bash/zsh/cmd.exe # 问题:安装后找不到huggingface-cli 检查项: - 是否在正确环境中执行 - 检查PATH环境变量 - 使用绝对路径执行: ~/miniconda3/envs/hf_env/bin/huggingface-cli ``` #### **8. 环境资源监控** ```bash # 查看环境磁盘占用 conda clean --all # 清理缓存 du -sh ~/miniconda3/envs/hf_env # 查看具体大小 # 查看依赖树结构 pipdeptree --packages huggingface_hub ``` --- ### Conda vs 系统Python对比表 | 特性 | Conda环境 | 系统Python | |---------------------|---------------------------|-------------------------| | 隔离性 | 完全隔离 | 全局共享 | | Python版本支持 | ✅ 一键切换 | ❌ 需要手动编译 | | 二进制依赖管理 | ✅ 自动处理 | ❌ 需自行解决 | | 磁盘占用 | 每个环境约500MB-2GB | 单一环境约200MB | | 适用场景 | 科研/项目开发 | 系统工具/简单脚本 | --- ### 进阶环境管理方案 ```bash # 使用mamba加速(conda替代品) conda install -n base -c conda-forge mamba mamba create -n hf_env python=3.10 mamba install huggingface_hub # 环境可视化工具 pip install conda-tree conda tree -n hf_env --depth 2 ``` --- ### 环境迁移方案 ```bash # 打包整个环境(适用于离线迁移) conda pack -n hf_env -o hf_env.tar.gz # 在目标机器解压 mkdir -p ~/conda_envs tar -xzf hf_env.tar.gz -C ~/conda_envs conda activate ~/conda_envs ``` --- ### 最佳实践推荐 1. **环境命名规范**:使用`项目名_用途_日期`格式,如`nlp_hf_202405` 2. **定期清理**:每季度清理不再使用的环境 3. **版本锁定**:重要项目生成`requirements.txt` + `environment.yml` 4. **环境分层**:基础环境安装CUDA等大型依赖,子环境继承基础环境
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值