如何自定义配置VC++宏定义 返回值OutDir ProjectName TargetPath等??

$(RemoteMachine)
设置为“调试”属性页上“远程计算机”属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置。
$(References)
以分号分隔的引用列表被添加到项目中。
$(ConfigurationName)
当前项目配置的名称(例如“Debug”)。
$(PlatformName)
当前项目平台的名称(例如“Win32”)。
$(Inherit)
指定在由项目生成系统所撰写的命令行中,继承的属性出现的顺序。默认情况下,继承的属性出现在当前属性的末尾。
$(NoInherit)
使任何将被继承的属性不被继承。若还要避免同级级别的计算,请使用&$(StopEvaluating)。使用&$(NoInherit)会导致对于同一属性忽略任何出现的&$(Inherit)。
$(StopEvaluating)
立即停止计算链中宏的计算。出现在&$(StopEvaluating)&之后的任何值将不出现在宏的计算值中。如果$(StopEvaluating)&在&$(Inherit)&之前,计算链中当前位置的继承值将不会连接到宏值。$(StopEvaluating)是&$(NoInherit)&的功能超集。
$(ParentName)
包含此项目项的项的名称。该名称将是父文件夹名称或项目名称。
$(RootNameSpace)
包含应用程序的命名空间(如果有)。
为中间文件指定的相对于项目目录的目录路径。它解析为“中间目录”属性的值。
输出文件目录的路径,相对于项目目录。这解析为“输出目录”属性的值。
$(DevEnvDir)
Visual Studio .NET 的安装目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“\”。
$(InputDir)
输入文件的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“\”。如果该项目是输入,则此宏等效于 $(ProjectDir)。
$(InputPath)
输入文件的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。如果该项目是输入,则此宏等效于 $(ProjectPath)。
$(InputName)
输入文件的基本名称。如果该项目是输入,则此宏等效于 $(ProjectName)。
$(InputFileName)
输入文件的文件名(定义为基本名称 + 文件扩展名)。如果该项目是输入,则此宏等效于 $(ProjectFileName)。
$(InputExt)
输入文件的文件扩展名。它在文件扩展名的前面包括“.”。如果该项目是输入,则此宏等效于 $(ProjectExt)。
$(ProjectDir)
项目的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“\”。
$(ProjectPath)
项目的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。
$(ProjectName)
项目的基本名称。
$(ProjectFileName)
项目的文件名(定义为基本名称 + 文件扩展名)。
$(ProjectExt)
项目的文件扩展名。它在文件扩展名的前面包括“.”。
$(SolutionDir)
解决方案的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“\”。
$(SolutionPath)
解决方案的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。
$(SolutionName)
解决方案的基本名称。
$(SolutionFileName)
解决方案的文件名(定义为基本名称 + 文件扩展名)。
$(SolutionExt)
解决方案的文件扩展名。它在文件扩展名的前面包括“.”。
$(TargetDir)
生成的主输出文件的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“\”。
$(TargetPath)
生成的主输出文件的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。
$(TargetName)
生成的主输出文件的基本名称。
$(TargetFileName)
生成的主输出文件的文件名(定义为基本名称 + 文件扩展名)。
$(TargetExt)
生成的主输出文件的文件扩展名。它在文件扩展名的前面包括“.”。
$(VSInstallDir)
安装 Visual Studio .NET 的目录。
$(VCInstallDir)
安装 Visual C++ .NET 的目录。
$(FrameworkDir)
安装 .NET Framework 的目录。
$(FrameworkVersion)
Visual Studio 使用的 .NET Framework 版本。与 $(FrameworkDir) 相结合,就是 Visual Studio 使用的 .NET Framework 版本的完整路径。
$(FrameworkSDKDir)
安装 .NET Framework SDK 的目录。.NET Framework SDK 可作为 Visual Studio .NET 的一部分安装,也可单独安装。
$(WebDeployPath)
从 Web 部署根到项目输出所属于的位置的相对路径。返回与 RelativePath 相同的值。
$(WebDeployRoot)
指向 &localhost& 位置的绝对路径。例如,c:\inetpub\wwwroot。
$(SafeParentName)
有效名称格式的直接父级的名称。例如,窗体是 .resx 文件的父级。
$(SafeInputName)
作为有效类名的文件的名称,但不包括文件扩展名。
$(SafeRootNamespace)
项目向导将在其中添加代码的命名空间名称。此命名空间名称将只包含在有效的 C++ 标识符中允许的字符。
$(FxCopDir)
fxcop.cmd 文件的路径。fxcop.cmd 文件不和所有的 Visual C++ 版本一起安装。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:34621次
排名:千里之外
原创:34篇
转载:17篇
评论:12条
(2)(1)(1)(1)(1)(2)(4)(2)(10)(5)(9)(2)(5)(6)Vs2008解决方案的目录结构设置和管理(转载) - 好工具站长分享平台
Vs2008解决方案的目录结构设置和管理(转载)
MS的这个,实在庞杂得恐怖。从大学开始,我就一直用的各个版本写程序至今,细细想来,也仅仅是窥豹一斑,羞愧不已。但若仔细翻阅文档,又觉得时间花得不值,于是便一直凑活地用着。
前段时间负责搭建新的开发环境,兼一直在看Gamebryo的代码,从中借鉴了不少工程管理的方法。结合以前使用VC的经验,现总结下来与大家分享,希望能起到抛砖引玉的作用。
项目目录结构
VC用解决方案(solution)来表示项目,每个项目由一个或多个工程(project)组成,每个project用来管理一个相对独立的模块。有些大型的项目,例如Gamebryo,甚至会有多个solution:一个solution用来管理LIB或DLL;一个solution用来管理所有的DEMO;一个solution用来管理tools等等。拆分成多个工程,好处之一是结构清晰,二是方便并行开发。每个project由不同的维护,输出LIB或DLL,再生成最终的EXE。项目的拆分是很有技术含量的,可以看出设计的功力。拆分得不好,就会产生一些诸如&project间相互依赖&的效应。
建立项目的时候,第一件要考虑的事情就是如何配置文件目录结构。如果是只有几个obj的微型项目,将所有东西全部扔到一个目录下也未尝不可(当然,这依然是最糟糕的做法);而对于包含N个project,一大堆的,还有文档,等等的大项目,糟糕的文件管理会把事情弄成一团浆糊。优秀的目录配置可以帮助迅速找到需要的东西,很容易就可以添加新的模块和代码,甚至反映出项目的基础&最后,好的目录结构,是充满美感的:)
下面就是本人比较喜欢的目录结构设置,实际中根据项目大小和需求有所增减:
src:存放所有的源代码&build:存放所有的工程文件(solution,project,makefile等)&doc:项目文档,doxygen文件等&sdk:工程依赖的所有库文件和头文件&out:编译器产生的中间文件,目标文件&bin:编译得到的exe和dll&上图没有列出来,但通常还会有:&res:资源目录,可执行文件需要用到的各种图像,声音,模型,场景,UI等资源文件&script:存放脚本文件&tool:各种自动化工具
稍微说明一下:一是最重要的源码要单独放一个目录,且不同模块的代码都归置到不同的下。这样的好处是,别人只需要看一眼你的目录结构,就大概知道你工程是怎样的一个架构了。我讨厌所有header放一个目录,所有cpp放另一个目录的做法,想找个文件都很痛苦。
二是工程文件(vc solution,project,makefile等)单独放一个目录。工程文件的重要程度仅次于源码,无工程文件,别人要编译或浏览你的代码都很杯具。插一句,有VC Project的话,Windows下用VC看代码真的是不二之选(当然,Linux下的工具集自不必提),再次就是Editplus+Everything了。话说回来,专业一点的话,build下应该有两个子目录:MSVC和MakeFile,当然还可以有CodeBlock,CodeLite等等。VC工程的话,solution,project和property sheet也应该分开存放
然后就是静态库。每个项目都应该是自给自足的,即整个项目目录我随便copy到什么地方,都照样能编译运行。所以必须要包含所有项目依赖的第三方的库文件和相关的头文件。还有我们的project本身也可能会输出lib,也应该放在同样的目录下,这样方便设置路径。
最后就是编译过程中产生的中间文件,这些我全部扔到out目录里,按"&project_name /[debug | release | ship] /&分目录存放,一是清理方便,二是看着舒心,最近我还发现这样还能避免链接静态库时的PCH Replacing的问题。而exe和DLL我输出到bin下,Lib则输出到SDK,debug版带后缀_d,release版带后缀_r,类似地shipping版带后缀_s
接下来会具体聊一下project属性的设置&
解决方案与项目:
从VC6之后VC系列就使用解决方案(Solution)来替代原来的工作,用于组织和管理多个相关的项目(Project)。
文章首先演示一个虚拟的解决方案和我们期望得到的目录结构,然后使用VC2008的项目设置功能来一步一步达到我们的需求。
虚拟解决方案:
该虚拟解决方案名为GMA,包含一个动态链接库项目ChocolateMilk和一个项目PureMilk,需要使用一个第三方库log4cxx(Apache log4j的C++移植版本,用于日志输出)。
log4cxx是以动态库的方式编译的,所以我们需要它的3样东西,分别是头文件,导入库(log4cxx.lib, log4cxxd.lib)和动态链接库(log4cxx.dll)。
假设我们期望的目录结构如下图:
1.&GMA是解决方案目录
2.&PureMilk和ChocolateMilk是项目目录
3.&Lib目录用于存放导入库或者静态库(包括第三方库和自己的项目)
4.&Include用于存放第三方库的头文件
5.&Bin目录存放所有动态链接库和执行档,包括自己的产出和第三方库,区分Release和Debug两个版本。另外,程序运行过程中需要外部的文件和启动时需要的配置文件等等都可放于该目录
6.&Temp用于存放临时生成文件,其中pile存放编译器编译时生成的obj文件,存放链接器的输出文件。
上面目录结构清晰,一面了然,当我们的程序需要制作安装包或者要打包源码
发布的时候,它能够使得我们生活变得更容易^_^
制作安装包时我们只需将&/GMA/Bin/Release/&目录下的所有文件打包。
发布和转移源码的时候我们可以打包除了Temp目录以外&/GMA/&下面的所有文件和目录(如果不需要执行档,也可不包括Bin)。
我们的需求是明确的,可是VC 2008并不会自动为我们做好上面所有的事情。不过我们并不需要编写复杂的编译脚本(makefile),只需要简单的修改项目的缺省设置即可。
我们需要VC为我们做的事情包括:
1.使用&/GMA/Temp/Compile/&作为项目编译时使用的中间目录
2.使用&/GMA/Temp/Link/&作为项目链接的输出目录
3.当项目是应用程序时,在构建结束后拷贝执行文件到&/GMA/Bin/Release/&或&/GMA/Bin/Debug/&,当项目是动态链接库时,除了拷贝dll到Bin,还拷贝导入库到&/GMA/Lib/&
4.当项目是应用程序时,调试时运行&/GMA/Bin/Debug/&或&/GMA/Bin/Release/&下面的执行文件,并以&/GMA/Bin/Debug/&或&/GMA/Bin/Release/&为工作目录
首先看一下项目设置中可以使用的宏,常用的有:
ConfigurationName
配置名字,通常是Debug或者Release
编译器使用的中间目录,产出obj文件
链接器使用的输出目录
ProjectDir
ProjectName
SolutionDir
解决方案目录
目标输出文件所在的目录
目标输出的扩展名
TargetFileName
目标输出文件名,包括扩展名
TargetName
目标输出名,不包括扩展名
TargetPath
目标输出文件的全路径名
首先来设置ChocolateMilk:
1.使用&/GMA/Temp/Compile/&作为项目编译时使用的中间目录
2.使用&/GMA/Temp/Link/&作为项目链接的输出目录
注意高亮的部分,首先将配置改成All Configuration(全部配置),这样可以让我们同时修改Debug和Release的部分;
Output Directory(输出目录,链接器)栏位填入:
$(SolutionDir)\Temp\Link\$(ProjectName)\$(ConfigurationName)
Intermediate Directory(中间目录,编译器)栏位填入:
$(SolutionDir)\Temp\Compile\$(ProjectName)\$(ConfigurationName)
3.构建结束后拷贝动态链接库到&/GMA/Bin/Release/&或&/GMA/Bin/Debug/&,拷贝导入库到&/GMA/Lib/&
我们通常都会在Debug版本的输出库后面加上字母&d&以表示这是Debug版本,在Debug配置下,修改Import Library栏位:
VC可以让我们设置构建前后执行的脚本程序,所以为了完成3,
我们需要写构建后执行的脚本:
在Command Line中填入,Debug配置下:
copy $(TargetPath) $(SolutionDir)\Bin\$(ConfigurationName)\;
copy $(TargetDir)$(TargetName)d.lib $(SolutionDir)\Lib\;
Release配置下:
copy $(TargetPath) $(SolutionDir)\Bin\$(ConfigurationName)\;
copy $(TargetDir)$(TargetName).lib $(SolutionDir)\Lib\;
之所以要分别设置是因为VC没有表示导入库的宏名字 -_-P
OK,到此为止,你就可以编译ChocolateMilk项目试试是不是一切正常了,不过请确认拷贝的目标目录事先建立好。
接下来我们设置应用程序项目PureMilk:
1.使用&/GMA/Temp/Compile/&作为项目编译时使用的中间目录
2.使用&/GMA/Temp/Link/&作为项目链接的输出目录
首先将配置改成All Configuration(全部配置),这样可以让我们同时修改Debug和Release的部分;
Output Directory(输出目录,链接器)栏位填入:
$(SolutionDir)\Temp\Link\$(ProjectName)\$(ConfigurationName)
Intermediate Directory(中间目录,编译器)栏位填入:
$(SolutionDir)\Temp\Compile\$(ProjectName)\$(ConfigurationName)
3.构建结束后拷贝执行文件到&/GMA/Bin/Release/&或&/GMA/Bin/Debug/&
在Command Line中填入,All配置下:
copy $(TargetPath) $(SolutionDir)\Bin\$(ConfigurationName);
4.调试时运行&/GMA/Bin/Debug/&或&/GMA/Bin/Release/&下面的执行文件,并以&/GMA/Bin/Debug/&或&/GMA/Bin/Release/&为工作目录
Command栏位填入:$(SolutionDir)\Bin\$(ConfigurationName)\$(TargetFileName)
Working Directory栏位填入:$(SolutionDir)\Bin\$(ConfigurationName)\
这样就大功告成了,现在你就可以编译该执行程序并进行调试。Visual C++ 使用解决方案来管理项目,项目之间还可能有依赖关系,设置适合自己的解决方案目录结构,便于代码的管理、程序的发布。
下面开始一个虚拟解决方案设计:& & & & 假设此解决方案有应用程序项目A,动态链接库项目B,静态链接库项目C,其中项目A依赖项目B和项目C,则构建解决方案项目结构如下图所示:而目录结构则如下图所示:Bin:存放所有动态链接库和可执行程序,分Debug和Release两个版本A:应用程序项目文件夹B:动态链接库项目文件夹C:静态链接库项目文件夹Doc:存放项目文档Include:存放引用库的头文件Lib:存放动态链接库的导入库、静态链接库Temp:存放临时生成文件,其中Compile存放编译时的中间文件,Link存放链接时的输出文件除了Doc需要自己建立外,其他文件夹无需手动建立。
项目结构创建步骤:1.创建一个新应用程序项目,名称A,解决方案名称为Work,如下图所示:2.在"解决方案资源管理器"右键"解决方案Work","添加"&"新建项目"&"Win32"&"Win32 项目",名称为B,在"应用程序设置"选择"DLL"和"空项目";3.同样的方式添加一个"Win32项目",名称为C,在"应用程序设置"选择"静态库",去掉"预编译头"选项;4.项目结构如下图所示:
项目属性设置
配置项目A的属性1.配置"所有配置","常规",输出目录:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)中间目录:$(SolutionDir)Temp\Compile\$(ProjectName)\$(ConfigurationName)2."生成事件"&"生成后事件",命令行:echo D | xcopy "$(TargetPath)" "$(SolutionDir)Bin\$(ConfigurationName)" /y3."C/C++"&"常规",附加包含目录:$(SolutionDir)Include4."链接器"&"常规",附加库目录:$(SolutionDir)Lib5."调试",命令:$(SolutionDir)Bin\$(ConfigurationName)\$(TargetFileName)工作目录:$(SolutionDir)Bin\$(ConfigurationName)配置项目B的属性1.配置"所有配置","常规"下,输出目录:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)中间目录:$(SolutionDir)Temp\Compile\$(ProjectName)\$(ConfigurationName)2.配置"Debug","链接器"&"常规"下,输出文件:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)\$(ProjectName)d.dll3.配置"所有配置","生成事件"&"生成后事件"下,命令行:echo D | xcopy "$(TargetPath)" "$(SolutionDir)Bin\$(ConfigurationName)" /yecho D | xcopy "$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib" /yecho D | xcopy "$(ProjectDir)B.h" "$(SolutionDir)Include" /y&第三行为xcopy动态库的头文件,实际要根据所需进行改动名称。配置项目C的属性1.配置"所有配置","常规"下,输出目录:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)中间目录:$(SolutionDir)Temp\Compile\$(ProjectName)\$(ConfigurationName)2.配置"Debug","管理员"&"常规"下,输出文件:$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)\$(ProjectName)d.lib3.配置"所有配置","生成事件"&"生成后事件"下,命令行:echo D | xcopy "$(TargetPath)" "$(SolutionDir)Lib" /yecho D | xcopy "$(ProjectDir)C.h" "$(SolutionDir)Include" /y&第二行为xcopy静态库的头文件,实际要根据所需进行改动名称。最后设置项目生成顺序菜单栏&"项目"&"项目依赖项",项目A依赖于B和C,如下图所示:编译生成,可看到如下结果:用tree命令看下文件夹结构:
其他网上关于目录结构配置资料:1.VC 2005 解决方案的目录结构设置和管理 &2.VC:目录结构 &3.VS2008中VC项目文件目录的管理 &4.研发规范-VC&
.Net 文章一周点击
.Net 文章一月点击
HaoGongJu.Net ( 好工具 ) All Rights ReservedVS2008+Qt 项目索引_在一个数组中查寻指定的值,返回第一个符合条件数组元素的位置_序:关于WAVECOM 218模块ppp拨号的有关问题__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
VS2008+Qt 项目索引
在一个数组中查寻指定的值,返回第一个符合条件数组元素的位置
序:关于WAVECOM 218模块ppp拨号的有关问题
VS2008+Qt 项目索引
VS2008+Qt 项目目录
1、项目开发环境:VS2008,QT4.7
2、项目的目录:
1)PETCT是解决方案名字
2)Bin目录存放所有动态链接库和执行档,包括自己的产出和第三方库,区分Release和Debug两个版本。另外,程序运行过程中需要外部的数据文件和启动时需要的配置文件等等都可放于该目录
3)ConsoleSubsytem是应用项目目录
4)Include用于存放第三方库的头文件
5)Lib目录用于存放导入库或者静态库(包括第三方库和自己的项目)
6)Temp用于存放临时生成文件,其中Compile存放编译器编译时生成的obj文件,Link存放链接器的输出文件。
7)TestDll是动态链接库项目目录,该项目会生成相关的Dll文件和Lib导入库文件
上面目录结构清晰,一面了然,当我们的程序需要制作安装包或者要打包源码
发布的时候,它能够使得我们生活变得更容易^_^
制作安装包时我们只需将“/PETCT/Bin/Release/”目录下的所有文件打包。
发布和转移源码的时候我们可以打包除了Temp目录以外“/GMA/”下面的所有文件和目录(如果不需要执行档,也可不包括Bin)。
我们的需求是明确的,可是VC 2008并不会自动为我们做好上面所有的事情。不过我们并不需要编写复杂的编译脚本(makefile),只需要简单的修改项目的缺省设置即可。
我们需要VC为我们做的事情包括:
1)使用“/PETCT/Temp/Compile/”作为项目编译时使用的中间目录
2)使用“/PETCT/Temp/Link/”作为项目链接的输出目录
3)当项目是应用程序时,在构建结束后拷贝执行文件到“/PETCT/Bin/Release/”或“/PETCT/Bin/Debug/”,当项目是动态链接库时,除了拷贝dll到Bin,还拷贝导入库到“/PETCT/Lib/”
4)当项目是应用程序时,调试时运行“/PETCTBin/Debug/”或“/PETCT/Bin/Release/”下面的执行文件,并以“/PETCTBin/Debug/”或“/PETCT/Bin/Release/”为工作目录
首先看一下项目设置中可以使用的宏,常用的有:
ConfigurationName
配置名字,通常是Debug或者Release
编译器使用的中间目录,产出obj文件
链接器使用的输出目录
ProjectDir
ProjectName
SolutionDir
解决方案目录
目标输出文件所在的目录
目标输出的扩展名
TargetFileName
目标输出文件名,包括扩展名
TargetName
目标输出名,不包括扩展名
TargetPath
目标输出文件的全路径名
3、详细配置过程
首先设置DLL项目TestDll
1)使用“/PETCT/Temp/Compile/”作为项目编译时使用的中间目录
2)使用“/PETCT/Temp/Link/”作为项目链接的输出目录
注意高亮的部分,首先将配置改成All Configuration(全部配置),这样可以让我们同时修改Debug和Release的部分;
Output Directory(输出目录,链接器)栏位填入:
$(SolutionDir)Temp\Link\$(ProjectName)\$(ConfigurationName)
Intermediate Directory(中间目录,编译器)栏位填入:
$(SolutionDir)\Temp\Compile\$(ProjectName)\$(ConfigurationName)
步骤1),步骤2),见下图。
3)构建结束后拷贝动态链接库到“/GMA/Bin/Release/”或“/GMA/Bin/Debug/”,拷贝导入库到“/GMA/Lib/”
我们通常都会在Debug版本的输出库后面加上字母“d”以表示这是Debug版本,在Debug配置下,修改Import Library栏位,见下图
VC可以让我们设置构建前后执行的脚本程序,所以为了完成3,我们需要写构建后执行的脚本:
在Command Line中填入,Debug配置下:
echo D | xcopy "$(TargetPath)"
"$(SolutionDir)Bin\$(ConfigurationName)" /y
echo D | xcopy
"$(TargetDir)$(TargetName)d.lib" "$(SolutionDir)Lib" /y
Release配置下:
echo D | xcopy "$(TargetPath)"
"$(SolutionDir)Bin\$(ConfigurationName)" /y
echo D | xcopy
"$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib" /y
之所以要分别设置是因为VC没有表示导入库的宏名字 -_-P
OK,到此为止,你就可以编译TestDll项目试试是不是一切正常了,不过请确认拷贝的目标目录事先建立好。
然后我们设置应用项目ConsoleSubsytem
1)使用“/PETCT/Temp/Compile/”作为项目编译时使用的中间目录
2)使用“/ PETCT /Temp/Link/”作为项目链接的输出目录
首先将配置改成All
Configuration(全部配置),这样可以让我们同时修改Debug和Release的部分;
Output Directory(输出目录,链接器)栏位填入:
$(SolutionDir)\Temp\Link\$(ProjectName)\$(ConfigurationName)
Intermediate
Directory(中间目录,编译器)栏位填入:
$(SolutionDir)\Temp\Compile\$(ProjectName)\$(ConfigurationName)
3)构建结束后拷贝执行文件到“/ConsoleSubsytem/Bin/Release/”或“/ConsoleSubsytem/Bin/Debug/”
在Command Line中填入,All配置下:
echo D | xcopy
"$(TargetPath)" "$(SolutionDir)Bin\$(ConfigurationName)" /y
4)调试时运行“/PETCT/Bin/Debug/”或“/PETCT/Bin/Release/”下面的执行文件,并以“/PETCT/Bin/Debug/”或“/PETCT/Bin/Release/”为工作目录。见下图
Debugging下,所有配置模式:
Command栏位填入:$(SolutionDir)Bin\$(ConfigurationName)\$(TargetFileName)
Working Directory栏位填入:$(SolutionDir)Bin\$(ConfigurationName)
这样就大功告成了,现在你就可以编译该执行程序并进行调试。
我稍微总结了一下网络上的关于VC项目文件目录的配置,主要结合自己现在项目要用的Qt。
网上值得推介的两篇文章有:
1、 Visual C++ 设置适合自己的解决方案目录结构 http://blog.csdn.net/akof1314/article/details/7190822
这篇新写的,也改正了网上出现的bug命令。很适合作参考来配置项目。
2、VC 2005 解决方案的目录结构设置和管理 http://blog.csdn.net/rogeryi/article/details/1481923
这个写的比较细,适合弄懂这样配置的原因
在一个数组中查寻指定的值,返回第一个符合条件数组元素的位置
在一个数组中查找指定的值,返回第一个符合条件数组元素的位置在一个数组中查找指定的值,返回第一个符合条件数组元素的位置(下标)需要使用 int
findFirst(int a[], int n, int value)如果我输入十个数字,我需要找到第一个大于1的数字的位置下标,就是a【i】,我要找到第一个这个i的值,我是这样编写的#include &stdio.h&int
findFirst(int a[], int i);void main(){ int i,a[10];
printf("input 10 numbers :\n");
for (i=0;i&10;i++)
scanf("%d",&a[i]); findFirst(&a[0],i); printf("符合条件的第一个大于一的数字的位置是%d\n",&i);}int
findFirst(int a[], int i){ for(i=0;i&10;i++) {
if(a[i]&1)
printf("%d",i);
} return(i);}紧急求助啊……哪里出错了啊?------解决方案--------------------C/C++ code
#include &stdio.h&
int findFirst(int a[], int i);
void main()
int i,a[10];
printf("input 10 numbers :\n");
for (i=0;i&10;i++)
scanf("%d",&a[i]);
printf("符合条件的第一个大于一的数字的位置是%d\n",findFirst(&a[0],i));
int findFirst(int a[], int i)
for(i=0;i&10;i++)
if(a[i]&1)
printf("%d",i);
return(i);
序:关于WAVECOM 218模块ppp拨号的有关问题
序:关于WAVECOM 218模块ppp拨号的问题【我目前的项目中需要通过ppp拨号GPRS模块,使用嵌入式linux系统自带的TCP/IP协议栈进行数据传输。
当前手头有两种模块:MC52I和WAVECOM-218
MC52I的ppp拨号顺利完成,但WAVECOM-218模块却一直没有调通】
重新整理思路
感觉应该还是ppp拨号脚本的问题
后来我在windows系统上再次尝试用wavecom 218来拨号,居然很顺利就OK了
不知道有没有人使用218模块的,方便的话给份脚本看看
我想知道到底在哪里出了问题
以下是我测试用的PPP脚本
[ppp-options]
plugin passwordfd.so
ttyUSB0 115200
usepeerdns
noipdefault
defaultroute
ipcp-accept-local
connect 'chat -v -f /etc/ppp/chat/my_isp'
[ppp-chat]
TIMEOUT 30
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
ABORT "BUSY"
ABORT "Username/Password Incorrect"
#OK "at&d2&c1"
OK "ate0v1"
#OK "ats0=0"
OK "AT+CGDCONT=1,\"IP\",\"CMNET\""
OK "atdt*99***1#"
CONNECT ""------解决方案--------------------知道问题了,是用户名和密码的问题
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:}

我要回帖

更多关于 宏定义 返回值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信