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

IntDir

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

OutDir

链接器使用的输出目录

ProjectDir

项目目录

ProjectName

项目名字

SolutionDir

解决方案目录

TargetDir

目标输出文件所在的目录

TargetExt

目标输出的扩展名

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

这个写的比较细,适合弄懂这样配置的原因

from:http://qimo601.iteye.com/blog/1360086

VS2008+Qt 项目目录的更多相关文章

  1. Qt DLL总结【三】-VS2008+Qt 使用QPluginLoader访问DLL

    目录 Qt DLL总结[一]-链接库预备知识 Qt DLL总结[二]-创建及调用QT的 DLL Qt DLL总结[三]-VS2008+Qt 使用QPluginLoader访问DLL 开发环境:VS20 ...

  2. qt项目转vs项目

    Qt creator是一个非常好用的跨平台项目管理工具和集成开发环境(IDE).但是对于我自己来说Visual Studio依然是我最顺手的开发工具,由于Qt使用了moc,这样要是自己管理Visual ...

  3. 转:Qt项目中遇到的一些小问题汇总

    链接:http://blog.csdn.net/yangyunfeizj/article/details/7082001    作者:GoatYangYang 公司让负责qt界面开发,但是接触qt又不 ...

  4. Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

    转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...

  5. 在Qt项目中如何添加一个已有的项目作为子项目

    新建一个子目录项目(具体方法参见<类似Visual Studio一样,使用Qt Creator管理多个项目,创建子项目>),然后需要添加的项目移动到该子目录项目目录下,再在其pro文件中添 ...

  6. Hello World程序演示Qt项目的建立、编译、运行和发布

    一.Qt项目的建立 1.选择项目模板. 选择"文件-->新建文件或工程",在选择模板页面选择Qt C++项目中的"Qt Gui应用"一项,然后单击&quo ...

  7. Qt编译目录下exe文件执行报错问题的解决办法

    使用Qt5.9.3+vs2017环境,编译项目生成Debug目录,运行其中的exe文件,出现以下错误(qt creator调试状态下或出安装包后是可以运行的): 经过查阅资料,发现是我重新配置Qt开发 ...

  8. 使用VisualStudio2015开发QT项目

    一直习惯用VS,做QT项目时,不停的来回切IDE有些不方便.研究了一下QT的编译. 实际QT编译的机制和cmake是相同的,QT的IDE使用pro文件进行项目管理.QMake通过解析pro工程文件,生 ...

  9. 创建Qt项目

    创建Qt项目 1     创建Qt项目 2.1 使用向导创建 打开Qt Creator 界面选择 New Project或者选择菜单栏 [文件]-[新建文件或项目]菜单项 弹出New Project对 ...

随机推荐

  1. C++基础-位运算

    昨天笔试遇到一道题,让实现乘法的计算方法,设计方案并优化,后来总结位运算相关知识如下: 在计算机中,数据是以1010的二进制形式存储的,1bytes = 8 bits,bit就是位,所以位运算就是对每 ...

  2. Apache的Mod_rewrite学习(RewriteRule重写规则的语法)

    URL:http://www.tenwe.com/tech/web/server/200705/content_1548.shtml 今天学习重写规则的语法.RewriteRuleSyntax: Re ...

  3. 数据切分——MySql表分区概述

    定义:         表的分区指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分.实际上,表的不同部分在不同的位置被存储为单独的表.用户所选择的.实现数据分割的规则被称为分区函数,这在M ...

  4. 数据切分——Mysql分区表的建立及性能分析

    Mysql的安装方法可以参考: http://blog.csdn.net/jhq0113/article/details/43812895 Mysql分区表的介绍可以参考: http://blog.c ...

  5. c++ 对象作为参数传递

    对象作为参数传递时是传值.把实参的对象赋值给形参.因此效率有点低. c++传参方式可以分为2种: 1.传值 (指针作为参数,本质上也只是把地址作为值传递了而已). 2.传引用. 所以,一切传递方式不是 ...

  6. cocos2dx进阶学习之CCLayer

    继承关系 CCLayer -> CCNode,CCTouchDelegate,CCAccelerometerDelegate,CCKeypadDelegate CCLayer在cocos2dx中 ...

  7. pl/sql 的 put和put_line区别

    在学习PL/SQL脚本时,打印语句是用得最多的语句. 在Oracle中,又有两种打印的方法:put和put_line.它们的区别是:put:不换行输出,输出在缓冲区,不显示出来,直到执行put_lin ...

  8. C#高级编程随笔

    1.把类创作的变量叫做对象2.类就是对象的模版3.类定义了每个对象的数据和功能4.接口不能被实例化,抽象类不能被实例化5.抽象基类可以包含非抽象方法,而接口只能包含抽象方法6.一个类可以实现多个接口7 ...

  9. [转][Swust OJ 24]--Max Area(画图分析)

    转载自:http://www.cnblogs.com/hate13/p/4160751.html Max Area 题目描述:(链接:http://acm.swust.edu.cn/problem/2 ...

  10. 【 D3.js 入门系列 — 2 】 绑定数据和选择元素

    1. 如何绑定数据 D3 有一个很独特的功能:能将数据绑定到 DOM 上,也就是绑定到文档上.这么说可能不好理解,例如网页中有段落元素<p>,我们可以将整数 5 与 <p>绑定 ...