在Qt 4.8中使用升压(1.52),这一切都ok了......现在我尝试移动到QT5并获得if.hpp: Macro argument mismatch
错误就行131 BOOST_MPL_AUX_NA_SPEC(3, if_)
在一些QT论坛有提出这样的解决方案:
#ifndef Q_MOC_RUN
// All boost includes
#endif // Q_MOC_RUN
在我的每一个文件,使用升压...所以这里的问题是-如何分辨提高是QT是没有准备好BOOST_MPL_AUX_NA_SPEC
和升压应使用一些更原始的预处理器语法一个会是QT5兼容?
更新:发现这个解决方案但似乎没有把所有的QT5任何影响=(
这里是我已经能够淘净了几个小时后,找到最好的解决方法。 它基本上是有什么其他人一直在说,但有一些澄清。
例如,如果我想使用的日志库,我想有:
#include <boost/log/trivial.hpp>
如果我打开了头文件,我可以在上面看到,包括后卫被命名为BOOST_LOG_TRIVIAL_HPP_INCLUDED_
。 因此,在.pro文件中相应的行内容如下:
QMAKE_MOC += -DBOOST_LOG_TRIVIAL_HPP_INCLUDED_
如果一对夫妇的更多音符他们相关的人:
- 如果你觉得这不是工作,确保运行的qmake和重建项目,只要你添加一个新行到您的项目文件。
- 我使用的Windows 7 32位使用Qt 5.0.1升压1.53和建设中QtCreator MSVC2010。
我一直在挣扎了同样的问题,并发现,当我删除的定义_MSC_VER=1700
从商务部自定义生成命令警告走了我。
我能够从所有的自定义删除此通过重写qmake.conf变量建立MOC步骤QMAKE_COMPILER_DEFINES
。 我使用的是.pro文件生成一个.vcxproj文件,并使用Visual Studio 2012编译我的项目( 在这里是如何产生从.pro文件一的.vcproj / .vcxproj文件)。
与Win32的msvc2012相关联的文件qmake.conf这个变量如下:
QMAKE_COMPILER_DEFINES += _MSC_VER=1700 _WIN32
在我的.pro文件我这个推翻它:
QMAKE_COMPILER_DEFINES = _WIN32
然后我再生的.vcxproj文件,并没有宏参数不匹配警告编译。
我使用VS 2012,提高1.51,和Qt 5.1.2(从git@gitorious.org编译:QT / qt5.git)。
希望这也适用于你。
我刚刚遇到了同样的问题,并发现了Qt的论坛有帮助的信息。
这里有Qt的bug报告和Qt的论坛主题与乐于助人的描述和问题的解决方法:
https://bugreports.qt-project.org/browse/QTBUG-29331
http://qt-project.org/forums/viewthread/22993/