使用GCC4.4,Qt4.7.4编译QtLua revision 221

来源:互联网 发布:软件测试理论基础 编辑:程序博客网 时间:2024/05/20 05:58

编译后不能在Qt4.7.4下使用,QtLua官方只支持Qt4.8以上版本 尴尬


直接上patch

Index: CMakeLists.txt===================================================================--- CMakeLists.txt(revision 221)+++ CMakeLists.txt(working copy)@@ -13,16 +13,16 @@ SET(INSTALL_INC include CACHE PATH "Where to install headers to.")  # Find Qt4-#SET(QT_USE_QTUITOOLS 1)-#SET(QT_USE_QTXML 1)-#FIND_PACKAGE(Qt4 REQUIRED)-#INCLUDE(${QT_USE_FILE})+SET(QT_USE_QTUITOOLS 1)+SET(QT_USE_QTXML 1)+FIND_PACKAGE(Qt4 REQUIRED)+INCLUDE(${QT_USE_FILE})  # Find Qt5-SET(CMAKE_INCLUDE_CURRENT_DIR ON)-FIND_PACKAGE(Qt5Widgets)-FIND_PACKAGE(Qt5Core)-FIND_PACKAGE(Qt5Xml)+#SET(CMAKE_INCLUDE_CURRENT_DIR ON)+#FIND_PACKAGE(Qt5Widgets)+#FIND_PACKAGE(Qt5Core)+#FIND_PACKAGE(Qt5Xml) #SET(CMAKE_AUTOMOC ON)  # Find Lua @@ -77,6 +77,8 @@  ########################################################################### +SET(CMAKE_CXX_FLAGS "-march=i486" CACHE STRING "Architecture to tell gcc to optimize for (-march)")+ ADD_DEFINITIONS(-DHAVE_CONFIG_H) ADD_DEFINITIONS(-DQT_NO_CAST_FROM_BYTEARRAY) ADD_DEFINITIONS(-DQTLUAREF_DEBUG)@@ -87,3 +89,5 @@ ADD_SUBDIRECTORY( src ) ADD_SUBDIRECTORY( tools ) ++Index: src/CMakeLists.txt===================================================================--- src/CMakeLists.txt(revision 221)+++ src/CMakeLists.txt(working copy)@@ -3,15 +3,15 @@  # Generate moc files -QT5_WRAP_CPP(MOC_OUTFILES QtLua/qtluaconsole.hh        OPTIONS -fQtLua/Console)-QT5_WRAP_CPP(MOC_OUTFILES QtLua/qtluauseritemselectionmodel.hh OPTIONS -fQtLua/UserItemSelectionModel)-QT5_WRAP_CPP(MOC_OUTFILES QtLua/qtluauseritemmodel.hh  OPTIONS -fQtLua/UserItemModel)-QT5_WRAP_CPP(MOC_OUTFILES QtLua/qtlualuamodel.hh       OPTIONS  -fQtLua/LuaModel)-QT5_WRAP_CPP(MOC_OUTFILES QtLua/qtluatabletreemodel.hh OPTIONS -fQtLua/TableTreeModel)-QT5_WRAP_CPP(MOC_OUTFILES QtLua/qtluaitemviewdialog.hh OPTIONS -fQtLua/ItemViewDialog)-QT5_WRAP_CPP(MOC_OUTFILES QtLua/qtluatablegridmodel.hh OPTIONS -fQtLua/TableGridModel)-QT5_WRAP_CPP(MOC_OUTFILES QtLua/qtluastate.hh          OPTIONS -fQtLua/State)-QT5_WRAP_CPP(MOC_OUTFILES qtluaqtlib.hh)+QT4_WRAP_CPP(MOC_OUTFILES QtLua/qtluaconsole.hh        OPTIONS -fQtLua/Console)+QT4_WRAP_CPP(MOC_OUTFILES QtLua/qtluauseritemselectionmodel.hh OPTIONS -fQtLua/UserItemSelectionModel)+QT4_WRAP_CPP(MOC_OUTFILES QtLua/qtluauseritemmodel.hh  OPTIONS -fQtLua/UserItemModel)+QT4_WRAP_CPP(MOC_OUTFILES QtLua/qtlualuamodel.hh       OPTIONS  -fQtLua/LuaModel)+QT4_WRAP_CPP(MOC_OUTFILES QtLua/qtluatabletreemodel.hh OPTIONS -fQtLua/TableTreeModel)+QT4_WRAP_CPP(MOC_OUTFILES QtLua/qtluaitemviewdialog.hh OPTIONS -fQtLua/ItemViewDialog)+QT4_WRAP_CPP(MOC_OUTFILES QtLua/qtluatablegridmodel.hh OPTIONS -fQtLua/TableGridModel)+QT4_WRAP_CPP(MOC_OUTFILES QtLua/qtluastate.hh          OPTIONS -fQtLua/State)+QT4_WRAP_CPP(MOC_OUTFILES qtluaqtlib.hh)  ADD_LIBRARY(qtlua SHARED  @@ -34,7 +34,7 @@              ${MOC_OUTFILES}) -QT5_USE_MODULES(qtlua Widgets Core)+QT4_USE_MODULES(qtlua Core)  TARGET_LINK_LIBRARIES(qtlua ${QT_LIBRARIES} ${LUA_LIBRARIES}) Index: src/QtLua/qtlualuamodel.hh===================================================================--- src/QtLua/qtlualuamodel.hh(revision 221)+++ src/QtLua/qtlualuamodel.hh(working copy)@@ -176,7 +176,7 @@  // More general purpose SizeHintRole =            ::Qt::SizeHintRole,-InitialSortOrderRole =      ::Qt::InitialSortOrderRole,+//InitialSortOrderRole =      ::Qt::InitialSortOrderRole,  UserRole =                  ::Qt::UserRole       };Index: tools/qtlua/CMakeLists.txt===================================================================--- tools/qtlua/CMakeLists.txt(revision 221)+++ tools/qtlua/CMakeLists.txt(working copy)@@ -1,6 +1,6 @@  ADD_EXECUTABLE(qtlua_app qtlua.cc )-QT5_USE_MODULES(qtlua_app Widgets Core)+QT4_USE_MODULES(qtlua_app Core)  TARGET_LINK_LIBRARIES(qtlua_app qtlua) SET_TARGET_PROPERTIES(qtlua_app PROPERTIES OUTPUT_NAME qtlua CLEAN_DIRECT_OUTPUT 1)Index: tools/uic/CMakeLists.txt===================================================================--- tools/uic/CMakeLists.txt(revision 221)+++ tools/uic/CMakeLists.txt(working copy)@@ -1,6 +1,6 @@  ADD_EXECUTABLE(qtlua_uic qtlua_uic.cc )-QT5_USE_MODULES(qtlua_uic Widgets Core Xml)+QT4_USE_MODULES(qtlua_uic Core Xml)  TARGET_LINK_LIBRARIES(qtlua_uic qtlua) 

 

郁闷的是,编译居然没通过,出错

CMakeFiles\qtlua.dir/objects.a(qtluaenum.cc.obj):qtluaenum.cc:(.text$_ZNK5QtLua10RefobjBase5_dropEv[QtLua::RefobjBase::_drop() const]+0x3e): undefined reference to `__sync_sub_and_fetch_4'


google大师说:“Update your GCC tool-chain. Or try to add -march=pentium or -march=i486, etc.”

于是,CMakeLists.txt就多了这行

SET(CMAKE_CXX_FLAGS "-march=i486" CACHE STRING "Architecture to tell gcc to optimize for (-march)")

好吧,删除编译目录,重新编译

出错,错误同上

 

晕,人品大爆发了,看看CXX_FLAGS有什么

libqtlua-build\src\CMakeFiles\qtlua/includes_CXX.rsp 

-isystem y:/Qt/qt474/mingw/include -isystem y:/Qt/qt474/mingw/include/QtUiTools -isystem y:/Qt/qt474/mingw/include/QtGui -isystem y:/Qt/qt474/mingw/include/QtXml -isystem y:/Qt/qt474/mingw/include/QtCore -Iy:/develop/Lua51/include -IE:/myworkspace/libqtlua/libqtlua-build -IE:/myworkspace/libqtlua/libqtlua/src -Iy:/Qt/qt474/mingw/mkspecs/default

把-march=i486加到前面,编译,通过了:)

 

 



 

原创粉丝点击