VS2013编译64位QT4.8.6源代码保姆流程
VS2013编译64位QT4.8.6源代码保姆流程1 下载Visual Studio 2013 Ultimate版本并进行安装2 下载QT4.83 源码编译4 下载qt-vs-tools-msvc2013-2.1.15 配置QT6 测试QT工程1 下载Visual Studio 2013 Ultimate版本并进行安装软件安装管家或者其他途径都可以,自行百度下载安装2 下载QT4.8下载 qt-e
VS2013编译64位QT4.8.6源代码保姆流程
1 下载Visual Studio 2013 Ultimate版本并进行安装
软件安装管家或者其他途径都可以,自行百度下载安装
2 下载QT4.8
下载 qt-everywhere-opensource-src-4.8.6 版本的源代码,http://download.qt.io/archive/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.zip
3 源码编译
第一步:
(1)修改E:\qt-everywhere-opensource-src-4.8.6\mkspecs\win32-msvc2013\qmake.conf
将
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG = /DEBUG
替换成
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF /INCREMENTAL:NO
QMAKE_LFLAGS_DEBUG = /DEBUG /INCREMENTAL:NO
(2)修改E:\qt-everywhere-opensource-src-4.8.6\src\3rdparty\webkit\Source\JavaScriptCore\wtf\HashSet.h
将
template<typename T, typename U, typename V>
inline pair<typename HashSet<T, U, V>::iterator, bool> HashSet<T, U, V>::add(const ValueType& value)
{
return m_impl.add(value);
}
替换成
template<typename T, typename U, typename V>
inline pair<typename HashSet<T, U, V>::iterator, bool> HashSet<T, U, V>::add(const ValueType& value)
{
typedef typename HashSet<T, U, V>::iterator iter_type;
auto& p = m_impl.add(value);
return make_pair((iter_type)p.first, p.second);
}
将
HashSet<Value, HashFunctions, Traits>::add(const T& value)
{
typedef HashSetTranslatorAdapter<ValueType, ValueTraits, T, HashTranslator> Adapter;
return m_impl.template addPassingHashCode<T, T, Adapter>(value, value);
}
替换成
HashSet<Value, HashFunctions, Traits>::add(const T& value)
{
typedef typename HashSet<Value, HashFunctions, Traits>::iterator iter_type;
auto& p = m_impl.template addPassingHashCode<T, T, Adapter>(value, value);
return make_pair((iter_type)p.first, p.second);
}
(3)修改E:\qt-everywhere-opensource-src-4.8.6\src\3rdparty\webkit\Source\JavaScriptCore\wtf\MathExtras.h
将
#if COMPILER(MSVC) || (COMPILER(RVCT) && !(RVCT_VERSION_AT_LEAST(3, 0, 0, 0)))
// We must not do 'num + 0.5' or 'num - 0.5' because they can cause precision loss.
static double round(double num)
替换成
#if (COMPILER(MSVC) && _MSC_VER < 1800) || (COMPILER(RVCT) && !(RVCT_VERSION_AT_LEAST(3, 0, 0, 0)))
// We must not do 'num + 0.5' or 'num - 0.5' because they can cause precision loss.
static double round(double num)
将
#if COMPILER(MSVC)
// The 64bit version of abs() is already defined in stdlib.h which comes with VC10
#if COMPILER(MSVC9_OR_LOWER)
inline long long abs(long long num) { return _abs64(num); }
替换成
#if COMPILER(MSVC) && _MSC_VER < 1800
// The 64bit version of abs() is already defined in stdlib.h which comes with VC10
#if COMPILER(MSVC9_OR_LOWER)
inline long long abs(long long num) { return _abs64(num); }
(4)修改E:\qt-everywhere-opensource-src-4.8.6\src\3rdparty\webkit\Source\WebCore\platform\DefaultLocalizationStrategy.cpp
将
return WEB_UI_STRING("LookUp “<selection>”","Look Up context menu item with selectedword").replace("<selection>",truncatedStringForLookupMenuItem(selectedString));
替换成
return WEB_UI_STRING("LookUp \"<selection>\"", "Look Up context menu item withselected word").replace("<selection>",truncatedStringForLookupMenuItem(selectedString));
第二步:
进入Visual Studio Tools目录,打开 VS2013 x64 本机工具命令提示
输入命令:
set QTDIR=E:\qt-everywhere-opensource-src-4.8.6
set QMAKESPEC=win32-msvc2013
set PATH=%PATH%;%QTDIR%\bin
cd %QTDIR%
确保进入到 E:\qt-everywhere-opensource-src-4.8.6目录
输入命令:
configure -opensource -nomake demos -nomake examples -platform win32-msvc2013
y
等待执行完成后,大约一分钟:
根据提示输入:
nmake
然后进入到漫长的编译过程,大约需要20分钟到一个小时,看机器,挂机稍等
4 下载qt-vs-tools-msvc2013-2.1.1
将QT嵌入到VS2013中的插件。网上随便搜一下就有,下载后,直接安装,点击下一步即可。这个插件需要 等源码编译完成后 再安装。
5 配置QT
打开 QT VS TOOLS,进入 QT Options, 点击 Add,添加我们的 QT文件名及其对应 路径,默认路径设置为我们新添加的,完成配置。
6 测试QT工程
我们的QT是 x64 环境的,因此平台调整为 x64
假设从网上下载的QT工程无法编译通过,打开 QT VS TOOLS,点击 Convert Project to QT VS TOOLS Project,确认即可
如果还没有编译通过,请进入到 系统高级设置,环境变量 ,检查是否存在 QTDIR环境变量,没有的话就手动加上
经过这一系列步骤后,我们的工程是可以编译通过的,但是代码可能仍旧存在一堆红色,然后也F12不到我们想要的代码,如果遇到这个问题,点击 项目–重新扫描解决方案 即可解决
至此,我们可以进行VS+QT的程序开发了
更多推荐
所有评论(0)