SCons 在使用嵌套目录时找不到"stdafx.hpp"
SCons not finding "stdafx.hpp" when using nested directories
我有一个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错误。但这应该是苏格兰人可以解决的,我只是不确定如何解决。。
我注意到,默认情况下,VisualStudio会在链接之前将所有*.obj文件复制到构建目录中。我认为这可能是解决方案的一部分,但我还是不确定。
我确信的是,这不是第一次有人遇到这个问题,但谷歌没有为我找到任何东西
PS:与本例不同的是,这些文件都没有命名冲突,理论上SCons可以毫无问题地将其移动到扁平文件夹结构中。
看起来您必须通过"CPPPATH"变量在环境中指定正确的包含路径。。。但如果看不到完整的命令行,就很难判断。请记住,所有SCons环境最初都是干净的。因此,如果你在错误的工作目录中,一个简单的"#include"在不同的文件夹中找不到标题。请参阅SCons的UserGuide,第14章"分层构建",它可能会给你更多的想法和见解,或者访问用户邮件列表scons-users@scons.org.
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- SCons 在使用嵌套目录时找不到"stdafx.hpp"
- 找不到stdafx.h中包含的头文件
- 致命错误:找不到'stdafx.h'文件