最近开始从visual studio转到QT上,遇到一些问题,记录一下,作为备忘
1,多工程情况下的生成目录管理
假设我的项目中有一个console的控制台工程,一个dll工程,两个工程的默认生成路径都是一个很长名字命名的文件夹,和工程目录同级的;这很不符合visual studio的习惯,并且使用过程也会比较麻烦,需要将生成的dll收到copy到exe文件目录;
解决方法如下:
1,新建一个文件夹,作为solution目录,然后创建一个bin目录,用于保存生成的bin文件,一个lib文件,用于存放生成的lib文件或者a文件,见下图:
2,首先配置qtdll工程
a,选择debug模式
b,先将构建目录的内容删除,然后将showbuild check框设置为不选中
c,添加构建步骤,用于将生成的dll copy到bin/debug目录下
命令:cmd,
参数:"/c copy /y %{buildDir}\debug\qtdll.dll %{buildDir}\..\bin\debug\qtdll.dll"
然后生成一下就可以了,qtdll.dll文件会被自动的copy到bin\debug\ 目录下
d,添加构建步骤,用于将生成的a或者lib文件 copy到lib/debug目录下
命令:cmd,
参数:"/c copy /y %{buildDir}\debug\libqtdll.a %{buildDir}\..\lib\debug\libqtdll.a"
然后生成一下就可以了,qtdll.dll文件会被自动的copy到bin\debug\ 目录下,libqtdll.a文件被自动拷贝到lib\debug\目录下了
release的配置方式相同,不再赘述
3,配置qtconsole
生成路径的配置方式同步骤2,不需要步骤d
4,配置运行项
对qtconsole进行运行配置,方便调试,将原来的运行配置项全部删除,重新构建一个debug和release的配置项,见下图
5,实现对dll的引用
在此例子中,qtconsole调用qtdll的一个方法,所以需要在pro文件(本人使用的是qmake)中配置debug和release下分别连接不同的lib文件,在pro文件中添加如下配置字段:
CONFIG(release, debug|release){
LIBS +=$$PWD/../lib/release/libqtdll.a
}else
{
LIBS +=$$PWD/../lib/debug/libqtdll.a
}
6,重新编译,调试就可以了
如果需要对release进行调试,在pro文件加入:
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO