解决编译Boost出现诡异的“C1083: 无法打开包括文件:"stddef.h"”问题


  • 网站研运

    TIM图片20190929161739.jpg
    最近给我们的小组构建新一个版本的USD应用,总是在构建Boost的过程中出现问题。报的错误是C1083,大概内容是这样的:

    boost fatal error C1083: cannot open include file: “stddef.h”: No such file or directory

    这个在USD的Boost文件夹中(类似D:\Develop\USD_build_19_11\src\boost_1_65_1)文件夹中的log.txt找到错误。

    因为我遇到的这个错误比较特殊,查了很多资料,包括如何设置MSVC 2017的环境变量:INCLUDELIBLIBPATH等,但是问题依然得不到解决。真是一件悲惨的故事啊。后面我查找了很久有关Boost编译的问题,包括了解Boost.Build这个构建系统以及构建脚本(总感觉构建脚本和Python很像,又有点Javascript的感觉),反正Boost.Build这个构建系统是很难用的了。我在构建Boost的时候是这么操作的:

    1. 执行bootstrap脚本:

    .\bootstrap.bat

    1. 开始使用b2构建,构建我们需要的模块:atomicprogram_optionsregexpythonfilesystem

    .\b2 --prefix="D:\Develop\USD_build_19_11" --build-dir="D:\Develop\USD_build_19_11\build\boost" -j4 address-model=64 link=shared runtime-link=shared threading=multi variant=release --with-atomic --with-program_options --with-regex --with-python --with-filesystem toolset=msvc-14.1 install

    后面一直报的是C1083错误。最后我偶然发现,Boost.Build向Temp目录写了批处理文件,名称类似这样的:

    b2_msvc_14.1_vcvars32_.cmd
    b2_msvc_14.1_vcvarsx86_amd64_.cmd
    

    看看构建日期,原来是二十多天前产生的。竟然放在临时目录没有删掉!我想可能以前我安装了Windows SDK又删掉了Windows SDK,所以路径不正确导致的。于是果断删掉这两个批处理文件,问题得到解决了!


Log in to reply
 

走马观花

最近的回复

  • 这个错误没多大影响,qt模块可以在QT setting里进行勾选

    read more
  • 如果对操作不是很熟悉或者是操作不便的话,也可以在Windows的命令行执行NDK的安装。参数是一样的:
    Windows命令行安装NDK

    read more
  • 忘记补充图片了。这里需要点击更新安装才行。😆
    点击更新安装

    read more
  • 问:
    如何在Qt Creator安装NDK呢?
    除了那个🔽 按钮外,还有别的办法吗?
    答:
    Qt Creaator 4.11中更加整合了Android SDK Manager。其实大家都可以不运行默认的Android SDK Manager,直接在Qt Creator中选项->设备->Android,就可以进行操作了。

    通过````高级选项……,启动一些Android SDK Manager,只需要带上参数ndk-bundle```。原来没有NDK的你,也可以通过Android SDK Manager安装了。很简单吧。
    Android SDK Manager安装NDK

    read more

关注我们

微博
QQ群