SCons没有找到" stdafx.hpp"使用嵌套目录时

时间:2014-10-09 02:19:02

标签: c++ visual-c++ scons pch

我有一个C ++项目,我正在从Visual Studio Solutions转换到SCons进行构建,因此Linux用户也可以构建我的代码。这是我第一次涉足SCons,它在简单的项目中运作良好。但是,对于这个项目,我有一个嵌套的目录结构:

main/
  sub1/*.cpp
  sub2/*.cpp
  sub3/*.cpp
  file1.cpp
  file2.cpp

我有以下SConstruct文件:

env = Environment()
env['PCHSTOP'] = 'stdafx.hpp'
env['PCH'] = env.PCH('stdafx.cpp')[0]

env.Program('program', [
  'file1.cpp',
  'file2.cpp',
  'sub1/file1.cpp',
  'sub2/file1.cpp',
  'sub3/file1.cpp'
])

从命令行运行scons会导致以下错误:

fatal error C1083: Cannot open include file: 'stdafx.hpp': No such file or directory

显然,这是一个MSVC错误。但这应该可以用Scons解决,我只是不确定如何......

我注意到默认情况下,Visual Studio会在链接之前将所有* .obj文件复制到构建目录。我认为这可能是解决方案的一部分,但同样,我不确定。

我确信,这不是第一次有人遇到这个问题,但谷歌没有为我提供任何东西。

PS:与示例中的不同,没有一个文件存在命名冲突,理论上可以通过SCons将其移动到平坦的文件夹结构而不会出现问题。

1 个答案:

答案 0 :(得分:0)

这看起来你必须通过“CPPPATH”变量在环境中指定正确的包含路径......但是如果没有看到完整的命令行就很难分辨。请记住,所有SCons envs最初都是干净的。因此,如果您在错误的工作目录中,如果它位于不同的文件夹中,则简单的“#include”找不到标题。 查看SCons' UserGuide, chap. 14 "Hierarchical Builds",它可能会为您提供更多想法和见解,或者访问scons-users@scons.org上的用户邮件列表。