【问题标题】:How to link boost to scons for compiling NVDA如何将 boost 链接到 scons 以编译 NVDA
【发布时间】:2013-09-17 10:47:11
【问题描述】:

我正在尝试从 Windows 上的源代码编译和构建 NVDA。源代码使用boost头文件并使用scon进行编译。我在C:\Program Files (x86)\boost\boost_1_47下安装了boost

scons 给出以下错误:

buffer.cpp
include\minhook\src\buffer.cpp(32) : fatal error C1083: Cannot open include file: 'boost/foreach.hpp': No such file or directory
scons: *** [nvdaHelper\build\x86\minHook\_minHook_buffer.cpp.obj] Error 2
scons: building terminated because of errors.`

由于我系统上的PATH 变量包含boost 的路径并且scons 找不到boost 标头,因此我在sconstruct 文件中env 对象的构造中添加了ENV

env = Environment(variables=vars,tools=["textfile","gettext","t2t",keyCommandsDocTool,'doxygen'],ENV = {'PATH': os.environ['PATH']})

打印env['ENV']['PATH'] 确认路径已添加,但我仍然收到相同的错误。我在这里错过了什么?

【问题讨论】:

    标签: boost scons nvda


    【解决方案1】:

    这是编译器如何调用的问题,与PATH环境变量无关。

    您需要如下设置Include Paths

    env = Environment() # construct the env accordingly
    env.Append(CPPPATH = 'C:\Program Files (x86)\boost\boost_1_47')
    

    CPPPATH 是SCons Construction Variable。您可能需要的其他内容是:

    • LIBS - 需要链接到二进制文件的库
    • LIBPATH - 要链接的库的路径
    • CXXFLAGS - 编译标志

    【讨论】:

    • 谢谢。我添加了 CPPPATH 和 LIBPATH 构造变量,但仍然看到相同的错误。
    • @Siddharth,可能 CPPPATH 中的路径不正确,这取决于您的安装。它可能需要是“C:\Program Files (x86)\boost\boost_1_47\include”。您应该能够将 CPPPATH 中的路径和源中包含的路径连接到头文件的有效路径中。
    • 导致错误的代码行是#include。头文件存在于“C:\Program Files (x86)\boost\boost_1_47\boost\foreach.hpp”中,所以我猜 CPPPATH (C:\Program Files (x86)\boost\boost_1_47) 中的路径是正确的.我也处理了反斜杠,并且非常怀疑这是否是一个词汇错误。
    • @Siddharth,您能否显示 SCons 执行的编译命令以查看编译器参数的样子。如果它很长,你可以把它放在 pastebin.com
    • This 是 scons 输出。原始sconstruct文件可以在here找到。
    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    相关资源
    最近更新 更多