• 11324阅读
  • 3回复

[原创]qt creator 中加入其他qt版本和交叉编译环境的方法 [复制链接]

上一主题 下一主题
离线novesky
 

只看楼主 倒序阅读 楼主  发表于: 2011-02-17
为了使用Qt Creator这个图形化的集成开发环境我们甚至可以把交叉编译环境也加入到里面。以我的motorola的EZX(使用qt2.3.8)开发环境为例,来讲讲操作步骤。

在点击 工具-选项,弹出的对话框中选择Qt版本,在手动设置中增加一项,版本名称 为 EZX,qmake 路径 为 /usr/bin/qmake-qt4。点击确定。注意只能选择qt4的qmake,否则版本无法识别,不能运行qmake。这一点不知有没有其他方法。这里一个问题是选好qmake后默认的mkspec为linux-g++(桌面),而我们希望是交叉编译的mkspec,不知如何修改。下面的方法是每次都手动修改。

window.open('http://www.qtcn.org/bbs/attachment/Mon_1102/18_73156_f8f056b918a18f1.png?113');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >



以上步骤完成后会在 左边那栏的 项目-Qt 版本里多出一项EZX 。接下来,为了在编译是能正确调用EZX的开发环境,我们还要在/usr/share/qt4/mkspecs中新建一个文件夹 linux-g++-montavista, 存放EZX编译环境的设置。参考现有的文件比如linux-g++中的qmake.conf,我的qmake.conf为


  1. ##
  2. # qmake configuration for linux-g++-montavista
  3. #
  4. MAKEFILE_GENERATOR   = UNIX
  5. TARGET_PLATFORM      = unix #Qt4
  6. TEMPLATE      = app
  7. CONFIG         += qt warn_off release
  8. #incremental link_prl
  9. QMAKE_INCREMENTAL_STYLE = sublib
  10. #
  11. # qmake configuration for common gcc
  12. #
  13. QMAKE_CC      = $(CCACHE) $(DISTCC) iwmmxt_le-gcc
  14. QMAKE_CFLAGS      = -pipe
  15. QMAKE_CFLAGS_DEPS   = -M
  16. QMAKE_CFLAGS_WARN_ON   = -Wall -W
  17. QMAKE_CFLAGS_WARN_OFF   = -w
  18. QMAKE_CFLAGS_RELEASE   = -O2 -mcpu=iwmmxt -mtune=iwmmxt
  19. QMAKE_CFLAGS_DEBUG   = -g
  20. QMAKE_CFLAGS_SHLIB   = -fPIC
  21. QMAKE_CFLAGS_STATIC_LIB   += -fPIC #Qt4
  22. QMAKE_CFLAGS_YACC   = -Wno-unused -Wno-parentheses
  23. QMAKE_CFLAGS_THREAD   = -D_REENTRANT  #Qt4 +=
  24. #Qt4
  25. #QMAKE_CFLAGS_HIDESYMS   += -fvisibility=hidden
  26. #QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
  27. #QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE}
  28. QMAKE_CXX      = $(CCACHE) $(DISTCC) iwmmxt_le-g++
  29. QMAKE_CXXFLAGS      = $QMAKE_CFLAGS  -DQWS -fno-exceptions -fno-rtti
  30. QMAKE_CXXFLAGS_DEPS   = $QMAKE_CFLAGS_DEPS
  31. QMAKE_CXXFLAGS_WARN_ON   = $QMAKE_CFLAGS_WARN_ON
  32. QMAKE_CXXFLAGS_WARN_OFF   = $QMAKE_CFLAGS_WARN_OFF
  33. QMAKE_CXXFLAGS_RELEASE   = $QMAKE_CFLAGS_RELEASE
  34. QMAKE_CXXFLAGS_DEBUG   = $QMAKE_CFLAGS_DEBUG
  35. QMAKE_CXXFLAGS_SHLIB   = $QMAKE_CFLAGS_SHLIB
  36. QMAKE_CXXFLAGS_YACC   = $QMAKE_CFLAGS_YACC
  37. QMAKE_CXXFLAGS_THREAD   = $QMAKE_CFLAGS_THREAD  #Qt4 +=
  38. QMAKE_INCDIR      = $(MONTAVISTA)/target/usr/include $(MONTAVISTA)/target/usr/local/include
  39. QMAKE_LIBDIR      = $(MONTAVISTA)/target/usr/lib $(MONTAVISTA)/target/usr/lib $(MONTAVISTA)/target/usr/local/lib
  40. QMAKE_INCDIR_X11   = /usr/X11R6/include
  41. QMAKE_LIBDIR_X11   = /usr/X11R6/lib
  42. QMAKE_INCDIR_QT      = $(QTDIR)/include $(EZXDIR)/include $(QT_EXTDIR)/include
  43. QMAKE_LIBDIR_QT      = $(QTDIR)/lib $(EZXDIR)/lib $(QT_EXTDIR)/lib
  44. QMAKE_INCDIR_OPENGL   = /usr/X11R6/include
  45. QMAKE_LIBDIR_OPENGL   = /usr/X11R6/lib
  46. QMAKE_LINK      = iwmmxt_le-g++
  47. QMAKE_LINK_SHLIB   = iwmmxt_le-g++
  48. QMAKE_LINK_C      = iwmmxt_le-gcc #Qt4
  49. QMAKE_LINK_C_SHLIB   = iwmmxt_le-gcc #Qt4
  50. QMAKE_LFLAGS      =  #Qt4 +=
  51. QMAKE_LFLAGS_RELEASE   =  #Qt4 +=
  52. QMAKE_LFLAGS_DEBUG   =  #Qt4 +=
  53. QMAKE_LFLAGS_APP   += #Qt4
  54. QMAKE_LFLAGS_SHLIB   = -shared  #Qt4 +=
  55. QMAKE_LFLAGS_PLUGIN   = $QMAKE_LFLAGS_SHLIB  #Qt4 +=
  56. QMAKE_LFLAGS_SONAME   = -Wl,-soname,  #Qt4 +=
  57. QMAKE_LFLAGS_THREAD   =  #Qt4 +=
  58. QMAKE_RPATH      = -Wl,-rpath,
  59. QMAKE_LFLAGS_RPATH = -Wl,-rpath,
  60. #Qt4: QMAKE_LFLAGS_RPATH
  61. QMAKE_PCH_OUTPUT_EXT    = .gch
  62. # -Bsymbolic-functions (ld) support
  63. QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
  64. QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
  65. #
  66. # qmake configuration for common linux
  67. #
  68. QMAKE_LIBS      =
  69. QMAKE_LIBS_DYNLOAD   = -ldl
  70. QMAKE_LIBS_X11      = -lXext -lX11 -lm
  71. QMAKE_LIBS_X11SM   = -lSM -lICE
  72. QMAKE_LIBS_NIS      = -lnsl
  73. QMAKE_LIBS_QT      =  -lqte-mt -lezxappsdk -lipp-jp -lezxopenwindow -lipp-miscGen -lezxappbase -lezxjpeg -lezxpm
  74. QMAKE_LIBS_QT_THREAD   = -lpthread -lqte-mt -lezxappsdk -lipp-jp -lezxopenwindow -lipp-miscGen -lezxappbase -lezxjpeg -lezxpm
  75. QMAKE_LIBS_OPENGL   = -lGLU -lGL -lXmu
  76. QMAKE_LIBS_OPENGL_QT   = -lGL -lXmu
  77. QMAKE_LIBS_THREAD   = -lpthread -lqte-mt -lezxappsdk -lipp-jp -lezxopenwindow -lipp-miscGen -lezxappbase -lezxjpeg -lezxpm
  78. QMAKE_MOC      = $(QTDIR)/bin/moc
  79. QMAKE_UIC      = $(QTDIR)/bin/uic
  80. QMAKE_AR      = iwmmxt_le-ar cqs
  81. QMAKE_RANLIB      =
  82. QMAKE_TAR      = tar -cf
  83. QMAKE_GZIP      = gzip -9f
  84. QMAKE_COPY      = cp -f
  85. QMAKE_COPY_FILE         = $(COPY)
  86. QMAKE_COPY_DIR          = $(COPY) -r
  87. QMAKE_MOVE      = mv -f
  88. QMAKE_DEL_FILE      = rm -f
  89. QMAKE_DEL_DIR      = rmdir
  90. QMAKE_STRIP             = iwmmxt_le-strip
  91. QMAKE_STRIPFLAGS_LIB    += --strip-unneeded
  92. QMAKE_CHK_DIR_EXISTS   = test -d
  93. QMAKE_MKDIR      = mkdir -p
  94. #
  95. # qmake configuration for common unix
  96. #
  97. QMAKE_LEX      = flex
  98. QMAKE_LEXFLAGS      +=
  99. QMAKE_YACC      = yacc
  100. QMAKE_YACCFLAGS      += -d
  101. QMAKE_YACCFLAGS_MANGLE  += -p $base -b $base
  102. QMAKE_YACC_HEADER       = $base.tab.h
  103. QMAKE_YACC_SOURCE       = $base.tab.c
  104. QMAKE_PREFIX_SHLIB      = lib
  105. QMAKE_PREFIX_STATICLIB  = lib
  106. QMAKE_EXTENSION_STATICLIB = a




在编译前,我们先选好 项目-Qt 版本 中的EZX,然后点击 构建步骤 qmake那行右边的详情,额外的参数写入 -spec linux-g++-montavista。


最后,在下方的 构建环境变量编辑QTDIR, PATH等变量为你交叉编译所需的值,比如交叉编译器的路径。


这些都做好后,就可以开始用qt creator进行交叉编译了。
这种方法有点美中不足的地方,比如每个工程都要在 项目里设置qmake 的参数和环境变量,qmake参数中QMLJSDEBUGGER_PATH去不掉,生成的Makefile会有很多不许要的东西比如DIST=各种prf文件。

离线wxj120bw

只看该作者 1楼 发表于: 2011-02-18
先收藏了 周末再尝试一下
离线zcy520
只看该作者 2楼 发表于: 2011-05-05
有人试过吗?
离线txwhhny

只看该作者 3楼 发表于: 2011-11-07
请问楼主的QTCreator用的是什么版本的
快速回复
限100 字节
 
上一个 下一个