Mau*_*bon 19 c++ boost qt4 cgal
我Parse error at "BOOST_JOIN"在尝试使用Qt4和CGAL编译代码时遇到错误.我没有直接使用Boost,我已经搜索并尝试了一些像-DBOOST_TT_HAS_OPERATOR_HPP_INCLUDED和的选项-DBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION.我正在使用的版本是CGAL 4.1.0,Qt 4.8.4_6和Boost 1.53.0_1,并使用CMake在Mac OS 10.8.2机器中生成Makefile.什么可能导致该错误的想法?
ele*_*ice 21
这个问题发生在Boost 1.56.0和QT 4.7.4(现在已经很老了),
无论如何,另一个快速的解决方法是编辑有问题的boost头文件,和
add to the top:
#ifndef Q_MOC_RUN
add to the bottom:
#endif
Run Code Online (Sandbox Code Playgroud)
这至少会让MOC在没有死亡的情况下运行.
lri*_*eau 18
当您编译一段定义Qt对象的代码时,构建系统需要调用Qt元对象编译器,即"moc".在5.0之前的Qt版本中,"moc"编译器(实际上是预编译器)无法正确解析所有C++代码.特别是,它没有完全扩展预处理器宏.在最近的Boost版本中,有时使用某些宏(如BOOST_JOIN)来定义命名空间名称.例如:
namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl) {
Run Code Online (Sandbox Code Playgroud)
在boost/type_traits/detail/has_binary_operator.hppBoost版本1.53中.
在Qt-Project.org上填写了一个Qt错误,据说在Qt-5.0中已修复.
在CGAL -4.2中,我试图通过在不同的编译单元中分离更多Qt和Boost的使用来抑制那些构建错误.您应该使用最新版本的Boost和CGAL-4.2-beta1(或更高版本,如果它们在您阅读该答案时发布)重试.如果您在使用CGAL-4.2-beta1或更高版本时遇到类似问题,请与我们联系.
至于Qt-5.0,我希望CGAL-4.3能够支持它.我们将不得不使用CMake脚本来支持它.它将被添加到下一次CGAL开发者会议的计划中.
| 归档时间: |
|
| 查看次数: |
12409 次 |
| 最近记录: |