VisualStudio 路径和项目属性配置

VC++项目解决方案总文件夹下只包含解决方案配置文件sln、一个项目文件夹(如果有多个工程,则分别对应多个工程文件夹)、一个Debug文件夹、一个Release文件夹(其中Debug和Release文件夹中存放最终生成的结果exe或dll,如果不使用Release则不存在Release文件夹),而项目总文件夹下包含C++源文件头文件、项目配置文件、一个Debug、一个Release文件夹(此处Debug和Release文件夹仅存放中间编译结果obj,不存exe和dll之类东西)。

 

“General“->“OutputDirectory”$(SolutionDir)$(Configuration)\(Configuration的值为DebugRelease,此处即为$(OutDir)属性赋值)为链接器用的如xx.ilkxx.pdb文件等的输出目录,“Intermediate Directory”为$(Configuration),而对于“Linker”-> “General”->“Output File”选项为$(OutDir)\$(ProjectName)${TargetExt}决定了输出${TargetExt}(一般为.exe)文件的位置,如下图所示。

 

“Debugging”->“Command”项,使用调试时从哪里启动exe文件,默认$(TargetPath)表示目标输出文件的全路径名,所以一般情况下它代表的值就等于“Output File”属性代表的值。“Debugging”->“WorkingDiretctory”项,默认$(ProjectDir)表示工程文件目录。Working Diretctory表示进行某项操作的目的目录,会随着OpenFileDialogSaveFileDialog等对象所确定的目录而改变。“WorkingDiretctory属性作用是程序运行后唯一识别的默认目录,是程序运行过程中默认读取的目录,代码中用GetCurrentDirectory之类的函数获取,工作后只认识这个目录,(可将所依赖的lib和dll库文件所在目录设为工作目录,但一般是把lib放在解决方案下的Lib目录中,把dll放在解决方案下的Bin目录中)。工作目录对于dll,如果是程序运行前就进入内存有点像静态链接那样,此时dll就可以放入exe所在的执行目录,如果dll是运行中动态加载的(比如插件),一般放在工作目录。需要注意vs中工作目录的设置是给调试用的,即你启动调试后,启动一个新进程,自动把这个新进程的工作目录设置为vs项目属性中的工作目录,然后新进程启动对应的exe程序。但如果是直接双击exe文件启动一个新进程时,会自动把这个新进程的工作目录设置为exe文件所在的目录,这是和vs启动调试不同的地方。所以如果发布的时候不把工作目录内的东西拷到exe所在的目录内,就会运行出错,因为此时工作目录不再是vs中设置的了,而是exe文件所在的目录。

项目设置中可以使用的宏,常用的有:

Configuration

配置名字,通常是Debug或者Release

IntDir

编译器使用的中间目录,产出obj文件

OutDir

链接器使用的输出目录

ProjectDir

项目目录

ProjectName

项目名字

SolutionDir

解决方案目录

TargetDir

目标输出文件所在的目录

TargetExt

目标输出的扩展名

TargetFileName

目标输出文件名,包括扩展名

TargetName

目标输出名,不包括扩展名

TargetPath

目标输出文件的全路径名

注意:调试栏目下的所有选项都是为了调试服务的,如果不用调试按钮,这些选项就不起作用。至于VC++目录以及C/C++栏目是给编译器起作用的,告诉编译器在哪里寻找头文件、库文件之类的事情,或者设置其他一些编译器选项。一些具体的案例请参考:http://blog.163.com/zhang_bo1983/blog/static/16992223020123753334981/

开发过程中, Visual Studio 链接外部 lib 及 dll 文件如何配置:

1.  直接添加到系统的 PATH变量里

方法最简单直接,坏处是会影响全局的 PATH 设置,尤其是包含着大量测试用 dll 时。

2.  在 Visual Studio 全局设置里,把 dll 所在目录添加到 PATH 里:

通过 Visual Studio 菜单 ==> 工具 ==> 选项 ==> 项目和解决方案 ==> VC++目录,在下拉框里选择"可执行文件",然后把 dll 所在路径添加进去。

3.  直接把所有 dll 拷贝到 Visual Studio 工程目录下,或是拷贝到生成可执行文件的文件夹(默认情况下是Debug 或 Release 目录)下:

这个方法也很简单,但是当你有若干个工程时,你每次更新 SDK 及其 dll 文件,你就要把所有的工程都更新,这个不符合文件唯一性的工程性准则。

4.  在调试程序时,让 Visual Studio 帮你切换当前工作目录到 dll 相应的目录下:

在 Visual Studio ==> Project ==> Properties ==> SelectConfiguration ==> Configuration Properties ==> Debugging ==> Workingdirectory 里填上 dll 所在目录,这样当在调试程序时,Visual Studio 会把当前工作目录切换到这个目录下,从而会自动读取本目录下的dll 文件。

这个方法的优点很明显,简单!副作用也很明显,在你切换了当前工作目录后,你可能会找不到程序的配置文件,在程序里写的诸如"./config.ini"全部都找不到了;另外,你要把所有的dll 都放到这个工作目录里,否则一样会提示说找不到 xxx.dll 的问题。

5.  最后一个方法,也是我认为最好的一个方法,在 VisualStudio 工程属性里把一个目录临时添加到 PATH 环境变量里:

MSDN 上也有类似的介绍:How to: SetEnvironment Variables for Projects,方法很简单,在"工程属性" ==> "调试" ==> "环境"里,添加类似如下所示的内容:

PATH=%PATH%;$(TargetDir)\DLLS

这样就可以把 $(TargetDir)\DLLS 临时添加到该工程所属的系统 PATH 里。

开发时可以根据项目的实际情况,灵活选用以上方法。

 


  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值