Qt工程转换成VS工程   VS 工程转QT creator

Qt工程转换成VS工程

标签: 工程转换VS

版权声明:本文为博主原创文章,未经博主允许不得转载。

在windows下,运行Qt Command Prompt。

输入命令行:

qmake -tp vc XXX.pro

会生成文件XXX.vcxproj

Visual Studio的project转成QT Creator的

project

本人QT生手,最近项目上却有个需求,要将原本的Visual Studio的project转成QT Creator的project。在进行了一番研究和动手实践以及再研究再实践之后,终于成功完成了这一转换,特此记录。

环境:

- Visual Studio 2013 (Ultimate)

- QT 5.5 Community

- 原本的VS工程是一个生成dll的工程

- 原本的VS工程其实是基于QT Template的工程

(安装了QT的VS插件,就可以在VS里建立基于QT template的工程。但是这里又有故事了。对于Visual Studio 2013,插件(add-in)已经不再是推荐的方式,推荐的方式叫做package或extension。所以一旦你安装了QT的插件(往往是2012版的),再想卸载它就无比困难了,就连MSDN上也没能写一个很清晰的解决方案,而网上的解决方案多为修改注册表,笔者没有试过,不知道能否卸载干净。)

先介绍一下QT工程的特点。相比于VS,QT的工程文件很简单,就是一个.pro文件,当然,有的时候还有.pri文件和.pro.user文件。.pro文件的目的是为了实现cross platform,即跨平台。.pro文件的内容都是配置信息,比如指明头文件所在,库文件所在,库文件名,目标文件名等等。.pri文件也是一种.pro文件,只是因为它是假定要被某.pro文件include的,所以叫.pri而没有叫.pro文件。在我的实例当中,.pri文件中主要是HEADERS和SOURCES,分别代表头文件和源文件。最后,.pro.user文件是一个xml文件,它是自动生成的,主要记录的是QT Creator里项目的配置信息,包括一些系统的环境变量等。

关于.pro文件的内容以及如何编写.pro文件,网上有很多不错的文章,这里就不赘述了。贴几篇文章的链接如下:

以上谈.pro文件的时候还谈到了qmake,那么它是什么呢?为何说.pro文件是为了跨平台而写的呢?原来,qmake是Trolltech公司(于2008年被诺基亚收购)创建的用来为不同的平台和编译器书写Makefile的工具。手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。使用qmake,开发者创建一个简单的“项目”文件(即.pro文件)并且运行qmake生成适当的Makefile。qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关心他们的代码。Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具。

那么了解了qmake和.pro文件的写法之后,再来看看我的转换历程吧。

第一步,因为原Visual Studio工程就是基于QT Template的工程,所以我们可以用VS里的QT插件里的"Create basic .pro file..."菜单选项来自动生成一个.pro文件,实际上,不仅仅生成了.pro 文件,还生成了.pri文件。但是目前的.pro文件还是不能用的,因为其中还有大量的配置需要修改,比如INCLUDEPATH和LIBS.

第二步,修改.pro文件使其包含正确而必要的配置信息。

总结笔者对.pro文件的具体修改如下:

1. TEMPLATE = lib

2. 将DESTDIR =  xxx改成:

Release:DESTDIR = xxx/Release

Debug:DESTDIR = xxx/Debug

3. CONFIG += debug_and_release

4. 完善INCLUDEPATH

5. 完善DEPENDPATH (这里又有故事了:事后笔者发现,只要在LIBS里写了-L"<LIBPATH>",就没必要写DEPENDPATH了。)

6. 加上 Release:DEPENDPATH 和 Debug:DEPENDPATH

7. 类似的,完善LIBS,添加Release:LIBS和Debug:LIBS

第三步,双击改好的.pro文件,QT Creator打开此工程,选中合适的Kit,就可以build了。因为是64位机器,Kit选的是QT 5.5.1的msvc2013_64.

最后千万要注意的是,在系统环境变量%PATH%里,对于Visual Studio的编译器cl.exe和链接器link.exe, 要选对路径。比如,对于64位的机器,路径 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64 应该被加到%PATH%中,而不是 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin 这一条在前一篇博文中已有详细阐述。

以上步骤做完后,就可以顺利地在QT Creator中进行build了。

最后还要提醒的一点是,如果更改了.pro文件,想让更改生效,必须手动删除qmake生成的Makefile, Makefile.Debug和Makefile.Release文件。

下面是一个.pro文件的实例:

[plain] view plain copy 

  1. TEMPLATE = lib
  2. TARGET = MyProject
  3. Release:DESTDIR = ../../../Output/x64/Release
  4. Debug:DESTDIR = ../../../Output/x64/Debug
  5. QT += core qml
  6. CONFIG += debug_and_release
  7. DEFINES += WIN64 QT_DLL QT_QML_LIB MyProject_LIB
  8. INCLUDEPATH += ./GeneratedFiles \
  9. . \
  10. ./GeneratedFiles/Release \
  11. $$(VC_INCLUDE) \
  12. $$(VC_INCLUDE)/../atlmfc/include \
  13. $$(WINSDK_INCLUDE)/shared \
  14. $$(WINSDK_INCLUDE)/um
  15. DEPENDPATH += . \
  16. $$(WINSDK_LIB)/um/x64 \
  17. $$(VC_LIB)/amd64 \
  18. $$(QTDIR)/lib \
  19. $$(QTDIR)/bin \
  20. Release:DEPENDPATH +=  ../../../3rd_library/opencv/libs/Release/x64 \
  21. ../../../3rd_library/DirectShow/baseclasses/x64/Release
  22. Debug:DEPENDPATH += ../../../3rd_library/opencv/libs/Debug/x64 \
  23. ../../../3rd_library/DirectShow/baseclasses/x64/Debug
  24. MOC_DIR += ./GeneratedFiles/release
  25. OBJECTS_DIR += release
  26. UI_DIR += ./GeneratedFiles
  27. RCC_DIR += ./GeneratedFiles
  28. Release:LIBS += -L"../../../3rd_library/DirectShow/baseclasses/x64/Release" \
  29. -lstrmbase \
  30. -L"../../../3rd_library/opencv/libs/Release/x64" \
  31. -lqtmain \
  32. -lQt5Qml \
  33. -lQt5Core \
  34. -lopencv_calib3d248 \
  35. -lopencv_contrib248 \
  36. -lopencv_core248 \
  37. -lopencv_features2d248 \
  38. -lopencv_flann248 \
  39. -lopencv_gpu248 \
  40. -lopencv_highgui248 \
  41. -lopencv_imgproc248 \
  42. -lopencv_legacy248 \
  43. -lopencv_ml248 \
  44. -lopencv_nonfree248 \
  45. -lopencv_objdetect248 \
  46. -lopencv_ocl248 \
  47. -lopencv_photo248 \
  48. -lopencv_stitching248 \
  49. -lopencv_superres248 \
  50. -lopencv_ts248 \
  51. -lopencv_video248 \
  52. -lopencv_videostab248
  53. Debug:LIBS += -L"../../../3rd_library/DirectShow/baseclasses/x64/Debug" \
  54. -lstrmbasd \
  55. -L"../../../3rd_library/opencv/libs/Debug/x64" \
  56. -lqtmaind \
  57. -lQt5Qmld \
  58. -lQt5Cored \
  59. -lopencv_calib3d248d \
  60. -lopencv_contrib248d \
  61. -lopencv_core248d \
  62. -lopencv_features2d248d \
  63. -lopencv_flann248d \
  64. -lopencv_gpu248d \
  65. -lopencv_highgui248d \
  66. -lopencv_imgproc248d \
  67. -lopencv_legacy248d \
  68. -lopencv_ml248d \
  69. -lopencv_nonfree248d \
  70. -lopencv_objdetect248d \
  71. -lopencv_ocl248d \
  72. -lopencv_photo248d \
  73. -lopencv_stitching248d \
  74. -lopencv_superres248d \
  75. -lopencv_ts248d \
  76. -lopencv_video248d \
  77. -lopencv_videostab248d
  78. LIBS += -L"$$(WINSDK_LIB)/um/x64" \
  79. -L"$$(VC_LIB)/amd64" \
  80. -L"$$(QTDIR)/lib" \
  81. -L"$$(QTDIR)/bin" \
  82. -lWtsapi32 \
  83. -lPathcch \
  84. -l3DScanningEngine \
  85. -lUserenv \
  86. -lwinmm \
  87. -lMf \
  88. -lMfplat
  89. include(MyProject.pri)

在实际build的过程中,笔者又发现QT是调用jom.exe去做的。这是个什么呢?原来,在VS里面,有一个工具叫做nmake,它和Linux上的make很像。但是这个nmake有一个缺点(笔者不确定现在还有没有这个缺点,但在2009年的时候是有的),就是它无法利用多核的优势并行编译。于是,就有人写了这么一个叫做jom的工具,类似于是多线程版本的nmake. 最初的那篇介绍jom的文章在这里: http://blog.qt.io/blog/2009/03/27/speeding-up-visual-c-qt-builds/

时间: 2024-11-08 09:17:03

Qt工程转换成VS工程   VS 工程转QT creator的相关文章

Java普通工程转换成标准的maven工程

一.使用Eclipse开发工具进行转换 1.新建一个普通的java工程:完了之后右键新建的java普通工程,在弹出的菜单中选择[Configure]-[Convert to Maven Project] 2. 在弹出的对话框中输入项目的groupId, artifactId和version等,点击[Finish],在根目录下生成maven的pom.xml文件. 无特殊情况默认即可. 3. 经过IDE转换的maven项目还不能满足要求,需要手动配置: a.  将pom.xml的根节点声明设置为最新

如何将VS2015工程转换成VS2012工程

如何将VS2015工程转换成VS2012工程修改.vcxproj,1.修改工具集 ToolsVersion=14.0 修改为 ToolsVersion=4.02.修改平台工具集 <PlatformToolset>v140</PlatformToolset> 为 <PlatformToolset>v110</PlatformToolset>3.修改头包含目录IncludePath 项目修改为 <IncludePath>$(VCInstallDir)

Qt工程转换成VS工程

添加环境变量 qmake 和vc的编译环境需要配置路径 通过qmake工具实现转换 首先在windows的命令提示符工具中浏览到需要转换的工程目录中去, 然后输入qmake –tp vc ,一切就大功告成,然后就可以直接用VS打开了. 原文地址:https://www.cnblogs.com/AZMDDY/p/8453709.html

eclipse中,将java工程转换成web工程

1. 编辑工程的.project文件. 添加 <nature>org.eclipse.wst.common.project.facet.core.nature</nature> 到 <natures> ... </natures> 2. 刷新项目,右击项目–>Properties->Project Facets,在右边勾选Java.javascript(非必须)与Dynamic Web Module 3. 如果你的项目源代码文件夹不是WTP默认的

Intellij IDEA 将工程转换成maven工程 详解

1> 右键工程,点击 Add Framework Support 2> 选中 Maven,再点击 OK 3> 工程根目录自动生成 pom.xml 文件,这样 工程就支持 Maven 版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/chenshun123/article/details/53844078 原文地址:https://www.cnblogs.com/hfultrastrong/p/8584312.html

My安卓知识6--关于把项目从androidstudio工程转成eclipse工程并导成jar包

是这样,我在我的android项目中想实现zxing也就是二维码的一些功能,但是需要的一个源码工程是androidstudio工程,想把这个工程转成eclipse工程并导成jar包在我的项目中使用. 我是直接新建一个eclipse工程,然后把androidstudio工程中src目录下,main目录下的java目录下的所有文件都直接复制粘贴到eclipse工程的src目录下,在把res中的布局文件都复制过去,就ok啦,然后再像平时那样把工程导成jar包,但是要注意,导jar包的时候,只选择src

java工程导成jar包,用批处理运行jar包

新建一个java工程(在本例中的工程名叫JavaProject),在main()里面写入自己要执行的方法. 接下来把工程导成jar包,操作步骤如下: 右键工程名,选择Export,选择java里面的Runnable JAR file(如下图) 点击Next后,在弹出框中选择自己的工程名(类名-工程名),选择jar包上传的位置(如下图:) 点击Finish按钮就可以生成了,双击生成的jar包就可以运行了. 接下来怎么用.bat文件运行jar包呢: 新建一个run.bat文件(文件名随便命名),用记

如何将一个Andorid工程导成JAR包

博主年后换了工作,换工作后一直要融入新环境,新的工作节奏,所以一直抽不出时间来更新博客. 今天介绍下,如果讲一个普通的android工程导成jar包,在其他工程调用. 1.将所有工程内,findviewById这种方式引入资源文件的,全部改为: mResouse = this.getResources(); int activity_camera_id = mResouse.getIdentifier("activity_camera", "layout", get

Java 工程打包成库需要依赖其它外部库的打包方式

2019-06-14 关键字:Java 打包.jar 打包依赖 经常会有将 Java 工程打包成一个 jar 库的形式以供其它工程调用的需求.而我们需要被打包成 jar 库的工程中也难免会有需要依赖外部其它 jar 库的情况.比如,我们自己开发一个通过 HTTP 访问网络资源的工程,这个工程需要解析 XML 文件,我们通常不会自己从零开发 XML 解析的功能,网络上已经有很多现成的 XML 解析 jar 库,直接拿来用就好了.在这种情况下,我们自己的 HTTP 访问网络资源工程在开发好以后,如果