VS配置路径和宏

164 篇文章 11 订阅

在介绍项目配置之前,先说明两点

1.

         项目配置中,最好不要使用相对路径,更不要使用绝对路径

         应尽量使用宏来指定所有路径

 

         请在以下地方查看VS2008中与路径相关的宏

         a.C/C++->常规->附加包含目录

         b.点击右边的按钮,会弹出一个对话框

         c.点击右下角的宏按钮,就可以看到所有的宏

 

2.

         在进行项目设置的时候,如果Debug和release下具有相同的属性,那么,在属性页中,最好配置选项设置为:所有配置

         这样,可以同时修改Debug和Release部分。

 

 

我们的项目的目录结构如下:

 

 

为了实现这样的目录结构,在建立工程项目的时候需要进行如下配置:

其中前三项是必须修改的指定的设置,后面用户可选

 

1.配置项目的输出目录和中间目录

         配置属性->常规->输出目录:

         $(SolutionDir)Build\Link\$(ProjectName)\$(ConfigurationName)

         配置属性->常规->中间目录:

         $(SolutionDir)Build\Compile\$(ProjectName)\$(ConfigurationName)

 

2.配置输出文件所在目录

         链接->常规->输出文件:

         $(OutDir)\$(ProjectName).dll

         链接->常规->附加库目录:

         $(SolutionDir)lib\$(ConfigurationName)

         其它项目如VBCSwitcher,如果也要引用当前lib中的库,则附加库目录为:

         $(SolutionDir)..\ebase\Lib\$(ConfigurationName)

 

3.配置生成后事件,将输出目录中的最终输出文件拷贝到bin目录中,同时将输出的lib文件拷贝到lib目录中

         生成事件->生成后事件->命令行:

         copy $(TargetPath) $(SolutionDir)Bin\$(ConfigurationName)

         copy $(TargetDir)$(TargetName).lib $(SolutionDir)Lib\$(ConfigurationName)

        

         其它项目如VBCSwitcher,如果也要输出到此目录,则生成后事件可写为:

         copy $(TargetPath) $(SolutionDir)..\ebase\Bin\$(ConfigurationName)

         copy $(TargetDir)$(TargetName).lib $(SolutionDir)..\ebase\Lib\$(ConfigurationName)

 

 

         如果有需要注册的控件也可以在生成后事件中完全注册

         echo regsvr32 $(TargetFileName) >> $(SolutionDir)Bin\$(ConfigurationName)\register.bat

         echo regsvr32 /u $(TargetFileName) >> $(SolutionDir)Bin\$(ConfigurationName)\unregister.bat

 

4.如果要指定调试命令和工作目录,则在下面的地方设置

         调试->命令:

$(SolutionDir)\Bin\$(ConfigurationName)\$(TargetFileName)

调试->工作目录:

$(SolutionDir)\Bin\$(ConfigurationName)\

具体查看如下部分说明:
以下部分的说明摘抄自:
http://blog.csdn.net/rogeryi/archive/2007/01/13/1481923.aspx
 

VC 2005 解决方案的目录结构设置和管理

Roger (roger2yi@gmail.com)

 

一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档。除此以外,根据项目的需求,还会使用一些第三方的库。

 

所以为解决方案设置一个合理的目录结构,不但可以使得代码管理更井井有条,项目成员之间也更容易相互配合,更重要的是能够使得最终应用程序的安装包制作,源代码打包发布和转移变得十分容易。

 

解决方案与项目:

从VC6之后VC系列就使用解决方案(Solution)来替代原来的工作空间,用于组织和管理多个相关的项目(Project)。

 

文章首先演示一个虚拟的解决方案和我们期望得到的目录结构,然后使用VC2005的项目设置功能来一步一步达到我们的需求。

 

 

虚拟解决方案:

 

该虚拟解决方案名为GMA,包含一个动态链接库项目ChocolateMilk和一个应用程序项目PureMilk,需要使用一个第三方库log4cxx(Apache log4j的C++移植版本,用于日志输出)。

 

log4cxx是以动态库的方式编译的,所以我们需要它的3样东西,分别是头文件,导入库(log4cxx.lib, log4cxxd.lib)和动态链接库(log4cxx.dll)。

 

假设我们期望的目录结构如下图:

 

1. GMA是解决方案目录

2. PureMilk和ChocolateMilk是项目目录

3. Lib目录用于存放导入库或者静态库(包括第三方库和自己的项目)

4. Incl?用于存放第三方库的头文件

5. Bin目录存放所有动态链接库和执行档,包括自己的产出和第三方库,区分Release和Debug两个版本。另外,程序运行过程中需要外部的数据文件和启动时需要的配置文件等等都可放于该目录

6. Temp用于存放临时生成文件,其中Compile存放编译器编译时生成的obj文件,Link存放链接器的输出文件。

 

上面目录结构清晰,一面了然,当我们的程序需要制作安装包或者要打包源码

发布的时候,它能够使得我们生活变得更容易^_^

 

制作安装包时我们只需将“/GMA/Bin/Release/”目录下的所有文件打包。

 

发布和转移源码的时候我们可以打包除了Temp目录以外“/GMA/”下面的所有文件和目录(如果不需要执行档,也可不包括Bin)。

 

我们的需求是明确的,可是VC 2005并不会自动为我们做好上面所有的事情。不过我们并不需要编写复杂的编译脚本(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
IntDir编译器使用的中间目录,产出obj文件
OutDir链接器使用的输出目录
ProjectDir项目目录
ProjectName项目名字
SolutionDir解决方案目录
TargetDir目标输出文件所在的目录
TargetExt目标输出的扩展名
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)\

 

这样就大功告成了,现在你就可以编译该执行程序并进行调试。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Bach是一种基于SDL(简单直观的抽象层)的编译工具,可以简化代码编译的过程。其中,Bach的配置文件是SDL文件,用于描述工具链和工程的配置信息。配置文件中包含了如下几个部分: 1. 配置目标平台信息,包括操作系统类型、CPU架构和编译器等选项。 2. 配置C、C++编译器和链接器的选项,包括预处理器、编译器、链接器等选项。这些选项可以是编译器命令行参数,也可以是预定义的符号和等。 3. 指定要编译的源文件和头文件搜索路径。 4. 配置可执行文件创建和链接选项,包括生成的可执行文件名称、对应的库文件、静态链接选项等。 5. 指定其他配置信息,如优化选项、调试信息选项等。 配置文件的格式类似于INI文件,由多个节组成。每个节包含了一个或多个键值对,用于描述某个特定方面的配置项。Bach提供了一种DSL(领域特定语言),可以通过DSL来生成SDL配置文件。DSL更为简洁易用,可以将配置文件生成过程自动化。 总之,Bach的配置文件是SDL文件,用于描述编译工具链和工程的配置信息。配置文件的内容包括了目标平台信息、编译选项、文件路径、链接选项等,配置文件的格式类似于INI文件,可以使用DSL来生成。 ### 回答2: Bach是一个基于SDL的音乐合成软件,SDL是Simple DirectMedia Layer(简单直接媒体层)的缩。Bach的配置文件是SDL,用于配置Bach的运行环境和参数。 SDL是一个跨平台的多媒体开发库,它提供了统一的接口来访问图像、音频和输入设备等多媒体资源。Bach使用SDL来实现音乐合成和处理,其配置文件中设置了SDL的相关参数,如音频采样率、声道数、缓冲区大小等。 配置文件SDL还可以设置Bach的其他参数,比如音频效果器、输出设备、MIDI输入等。通过修改配置文件,用户可以根据自己的需要调整Bach的性能和功能。 除了配置文件SDL,Bach还提供了其他几个重要的文件,如乐谱文件、声音库文件等。这些文件共同构成了Bach的工作环境,使其能够实现高质量的音乐合成和处理。 总之,Bach的配置文件SDL是其运行环境和性能的关键之一,通过适当的调整可以实现更好的音乐合成效果。 ### 回答3: Bach是一个自动化工具,用于构建和测试SDL代码。Bach配置文件SDL是Bach使用的一种配置文件,可以用来在Bach中配置SDL项目的构建和测试过程。 SDL是一种用于开发安全和可靠的系统的软件建模语言。它适用于开发许多不同类型的系统,包括航空航天、汽车、铁路、电力和医疗等。SDL的主要特点包括形式化建模、自动代码生成和自动验证等。 Bach配置文件SDL是一个基于XML的文件,其中包含了用于构建和测试SDL项目的各种参数和指令。它可以指定SDL源代码、测试用例、编译选项、连接选项和测试框架等。 使用Bach配置文件SDL可以方便地进行自动化构建和测试SDL项目,提高开发效率和软件质量。同时,Bach还提供了丰富的命令行接口和插件支持,使得它可以与其他工具和系统无缝集成。 总之,Bach配置文件SDL是一个非常有用的工具,对于开发安全和可靠的系统具有重要意义。通过使用Bach配置文件SDL,可以更快地构建和测试SDL项目,从而更好地满足客户需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值