如何将boost链接到SCON以编译NVDA

如何将boost链接到SCON以编译NVDA,boost,scons,nvda,Boost,Scons,Nvda,我正在尝试在Windows上从源代码编译和构建。源代码使用boost头并使用scon进行编译。我在C:\ProgramFiles(x86)\boost\boost\u 1\u 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 direct

我正在尝试在Windows上从源代码编译和构建。源代码使用boost头并使用scon进行编译。我在
C:\ProgramFiles(x86)\boost\boost\u 1\u 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']
确认已添加路径,但仍会收到相同的错误。这里缺少什么?

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

您需要按如下方式设置所谓的
包含路径

env = Environment() # construct the env accordingly
env.Append(CPPPATH = 'C:\Program Files (x86)\boost\boost_1_47')
CPPPATH是一个。您可能需要的其他服务包括:

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

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

      您需要按如下方式设置所谓的
      包含路径

      env = Environment() # construct the env accordingly
      env.Append(CPPPATH = 'C:\Program Files (x86)\boost\boost_1_47')
      
      CPPPATH是一个。您可能需要的其他服务包括:

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

      谢谢。我添加了CPPPATH和LIBPATH构造变量,但仍然看到相同的错误。@Siddharth,CPPPATH中的路径可能不正确,这取决于您的安装。它可能需要是“C:\ProgramFiles(x86)\boost\boost\u 1\u 47\include”。您应该能够将CPPPATH中的路径和源中包含的路径连接到头文件的有效路径中。导致错误的代码行是#include。头文件出现在“C:\Program Files(x86)\boost\boost\u 1\u 47\boost\foreach.hpp”中,因此我猜CPPPATH(C:\Program Files(x86)\boost\boost\u 1\u 47)中的路径是正确的。我也注意到了反斜杠,并且非常怀疑它是否是一个词汇错误。@Siddharth,你能展示一下SCons执行的编译命令,看看编译器参数是什么样子吗。如果它很长,你可以把它放在pastebin.com上,它是scons的输出。可以找到原始的sconstruct文件。谢谢。我添加了CPPPATH和LIBPATH构造变量,但仍然看到相同的错误。@Siddharth,CPPPATH中的路径可能不正确,这取决于您的安装。它可能需要是“C:\ProgramFiles(x86)\boost\boost\u 1\u 47\include”。您应该能够将CPPPATH中的路径和源中包含的路径连接到头文件的有效路径中。导致错误的代码行是#include。头文件出现在“C:\Program Files(x86)\boost\boost\u 1\u 47\boost\foreach.hpp”中,因此我猜CPPPATH(C:\Program Files(x86)\boost\boost\u 1\u 47)中的路径是正确的。我也注意到了反斜杠,并且非常怀疑它是否是一个词汇错误。@Siddharth,你能展示一下SCons执行的编译命令,看看编译器参数是什么样子吗。如果它很长,你可以把它放在pastebin.com上,它是scons的输出。可以找到原始的sconstruct文件。