| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> vs工程下的输出目录/输出文件/工作目录等 -> 正文阅读 |
|
[开发工具]vs工程下的输出目录/输出文件/工作目录等 |
vs工程下的输出目录/输出文件/工作目录等 1.vs解决方案下各文件夹的包含关系?一般来说,vs中的c++项目的解决方案总文件夹下包含解决方案配置文件sln和一个项目总文件夹和x64文件夹(包含一个Debug文件夹以及一个Release文件夹,存放最终生成的结果exe或dll,如果不使用Release生成,则不存在Release文件夹)共四个文件夹。 而解决方案和项目文件夹包含关系下包含C++源文件头文件、项目配置文件和一个Debug文件夹以及一个Release文件夹(注意,此处的Debug和Release文件夹仅仅存放中间编译结果obj,不存放exe和dll之类的东西。如果不使用Release编译,则没有对应的Release文件夹) ?
2.输出目录/输出文件/工作目录2.1 输出目录-决定$(OutDir) 即设置了VS的“输出目录”属性就相当于设置了$(OutDir)的值。 如果我们建立一个默认的vc项目VsQt,他的默认“常规“栏目中,“输出目录”为$(SolutionDir)$(ConfigurationName),所以调试时会在解决方案文件夹下建立一个debug(ConfigurationName的值为debug)文件夹,并在此文件夹下生成 VsQt.lik链接器 和VsQt.exe文件(默认情况下) 。 默认“中间目录”为$(ConfigurationName),所以会在VsQt项目文件夹下(即VsQt.vcproj的项目配置文件所在位置)建立一个debug文件夹,并在该文件夹下生成VsQt.obj二进制文件。 ?默认“链接器”栏目下的“常规”选项下的“输出文件”选项为?$(OutDir)$(ProjectName).exe,其中$(OutDir)就已经在“常规”栏目的“输出目录”选项赋值了。 ?注意:实际上输出目录不决定输出exe文件的位置。 2.2 输出文件-决定$(TargetDir)$(TargetDir)的值是在生成exe文件后自动赋予值为exe文件所在位置。所以可以说,“输出文件”最终决定exe文件所在的位置。 默认情况下“输出目录”和“输出文件”两个属性对应的目录是一样的,这样用着方便(当然,输出文件的值在输出目录的值的基础上还包含有exe文件名)。如果两个不一样,则中间生成的链接器用的如xx.ilk和xx.pdb文件等在输出目录,而最终生成的xx.exe文件在“输出文件”属性设置的目录中。 当调试程序时,系统变量$(OutDir)的值是最先确定的,而$(TargetDir)和$(TargetPath)的值是在exe文件生成后才确定的。也就是说系统变量$(OutDir)的值由VS项目的“输出目录”属性决定,而$(TargetDir)和$(TargetPath)的值由VS项目的“输出文件”属性决定。 2.3 工作目录“调试”栏目中的“工作目录”项,这个属性默认情况下是$(ProjectDir),表示工作目录是工程目录,也就是工程配置文件VsQt.vcproj所在目录。 ?“工作目录”属性作用是程序运行后唯一识别的默认目录,即工作后只认识这个目录。 例如程序运行过程中生成一个txt文本文件,如果在创建文件过程中未指定绝对路径,只指定创建文件的文件名,那么这个文本文件默认就会建立在工作目录中,当然读取一些配置文件也在工作目录中查找,但要说明一下,生成的exe文件跟工作目录没任何关系,也不会放在工作目录中。总的来说,工作目录就是程序运行过程中默认读取的目录。 重要补充: vs中工作目录的设置是给调试用的,也即你启动调试后,启动一个新进程,自动把这个新进程的工作目录设置为vs项目属性中的工作目录,然后新进程启动对应的exe程序。 但是如果不使用vs的调试启动exe,而是直接双击exe文件启动一个新进程时,会自动把这个新进程的工作目录设置为exe文件所在的目录,这是和vs启动调试不同的地方。所以如果发布的时候不把工作目录内的东西拷到exe所在的目录内,就会运行出错,因为此时工作目录不再是vs中设置的了,而是exe文件所在的目录。
如果工程中用到的文件不在默认的工作目录下,而程序中又直接使用了相对路径,则应修改工作目录。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/23 18:20:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |