一个完整的项目属性一般包含:常规,调试,C/C++,链接器,浏览信息,生成事件,自定义生成步骤,Web部署等根!
在常规中一般指定项目中的常规项!如,输出目录,中间目录,清除时要删除的扩展名等!
首先讲解一下'输出目录',输出目录用于指定项目生成配置文件后的路径,在Debug(调试版)和Release(发行版)中一般都有默认的输出目录,(Debug)和(Release)目录,输出目录一般不用我们自己创建,在编译时编译器已经帮我们生成了此目录!在输出目录中装载的是我们的编译文件!如果想将编译出来的文件输出到我们指定的目录时,则可以手动修改此项!
中间目录:在中间目录中一般装载的是编译器生成配置文件时,所需要的中间文件,这些中间文件一般没有什么作用!中间目录与输出目录一样在Debug与Release版本中,也是有默认目录的并且目录也一样!在此我建议大家在制作项目时将中间目录与输出目录分开!这样在我们需要手动删除中间文件时,便可不用理会是否删除了编译器生成的配置文件!
配置类型:在此项中一般为编译器指定生成文件的类型,这里有几个选项如生成文件,应用程序类型(EXE),动态连接库类型(DLL),静态连接库类型(Lib),实用工具!我目前知道其中三个的作用:应用程序类型(EXE),动态连接库类型(DLL),静态连接库类型(Lib)!应用程序类型一般指的是编译器帮我们生成EXE可执行文件!动态连接库类型(DLL),指的是在应用程序使用的动态链接库!静态链接库类型与动态连接库类型一样!
字符集选项:一般用于指定此项目中使用的字符集,有三种选择 一:未设置,二:union字符集,指定此字符集的项目一般使用的都是宽字符!多字节字符集,指定此字符集的项目一般不能使用宽字符集!
测试一个proj的链接库是否正确是,没必要清除掉重新编译,只需删掉DLL文件就可以了,这样的话那些obj都在,链接就行。
生成后事件:
生成后事件,它的定义是在具体project文件的,所以用到的宏应该要以project为单位,因为你不知道这个project会被包含进不同的solution,所以不应该使用类似$SolutionDir这样的宏,使用$ProjectDir就比较保险了。
lib文件同exp文件是同时产生的,在dll的导入库设置中,更改lib的位置,exp文件也会在相应的位置生成。
dll文件同ilk文件同时产生的,ilk是联合编译器的文件。
在组织项目的文件的时候可以这样,因为一个solution中,很多project的输出目录可能是先同的,而project之间相互可能有依赖,那么在定义依赖项的时候,可以将依赖目录设置为$(OutDir),而在附加依赖项里只要设置lib文件名就可以了,这样倘若输出目录变了,也能得到灵活的支持。
输出文件还是分为两类好,debug和release,因为有的时候生成了debug和release的dll,需要把它们拷到相应的应用程序目录下,这样寻找起来比较麻烦,缺少清晰性。
输出目录一旦定义,以后的设置都尽量以其为标准,增加灵活性。
在一个proj的debug设置中可以:
常规
输出目录:../../bin/Debug (根据实际情况,这个输出目录一旦指定,就可以通过宏$(OutDir)来访问)
中间目录:obj/Debug (这个以project自身为基础,一般没有用处,为了清晰见)
调试
工作目录:$(OutDir) (如果是exe的话)
C/C++
常规
附加包含目录: 这个可能没办法,用的话使用相对路径设置,以proj文件为基
链接器
常规
输出文件: $(OutDir)/$(ProjectName)_d.dll
附加库目录:$(OutDir) 以及其他的第三方库,为了增加灵活性,可以将第三方库的相应dll也放在这个目录里,也省得到处去设置它。
输入
附加依赖项:tinyxml_d.lib 等 (这些附加依赖项可能一般都在$(OutDir)中)
调试
生成程序数据库文件: $(OutDir)/$(ProjectName)_d.pdb
高级
导入库:$(OutDir)/$(ProjectName)_d.dll
在一个proj的release设置中可以:
常规
输出目录:../../bin/Release (根据实际情况,这个输出目录一旦指定,就可以通过宏$(OutDir)来访问)
中间目录:obj/Realse (这个以project自身为基础,一般没有用处,为了清晰见)
调试
工作目录:$(OutDir) (如果是exe的话)
C/C++
常规
附加包含目录: 这个可能没办法,用的话使用相对路径设置,以proj文件为基
链接器
常规
输出文件: $(OutDir)/$(ProjectName).dll
附加库目录:$(OutDir) 以及其他的第三方库,为了增加灵活性,可以将第三方库的相应dll也放在这个目录里,也省得到处去设置它。
输入
附加依赖项:tinyxml.lib 等 (这些附加依赖项可能一般都在$(OutDir)中)
调试
生成程序数据库文件: $(OutDir)/$(ProjectName).pdb
高级
导入库:$(OutDir)/$(ProjectName).dll