SCons 找不到它应该自行构建的文件

SCons does not find file it should build itself

我有一个简单的 SConstruct 文件来使用 MinGW 构建 google 测试库:

env = Environment(platform='posix')  # necessary to use gcc and not MS
env.Append(CPPPATH=['googletest/'])
env.Append(CCFLAGS=[('-isystem', 'googletest/include/'), '-pthread'])
obj = env.Object(source='googletest/src/gtest-all.cc')
# linking skipped due to error search
# env.Append(LINKFLAGS=['-rv'])
# bin = env.StaticLibrary(target='libgtest', source=[obj])

脚本位于 googletest\ 主文件夹中。当 运行 它 - 有或没有链接 - 输出是这样的:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o googletest\src\gtest-all.o -c -isystem googletest/include/ -pthread -Igoogletest googletest\src\gtest-all.cc
scons: *** [googletest\src\gtest-all.o] The system cannot find the file specified
+-.
  +-googletest
  | +-googletest\src
  |   +-googletest\src\gtest-all.cc
  |   +-googletest\src\gtest-all.o
  |   | +-googletest\src\gtest-all.cc
  |   | +-googletest\src\gtest-death-test.cc
  |   | +-googletest\src\gtest-filepath.cc
  |   | +-googletest\src\gtest-port.cc
  |   | +-googletest\src\gtest-printers.cc
  |   | +-googletest\src\gtest-test-part.cc
  |   | +-googletest\src\gtest-typed-test.cc
  |   | +-googletest\src\gtest.cc
  |   | +-googletest\src\gtest-internal-inl.h
  |   +-googletest\src\gtest-death-test.cc
  |   +-googletest\src\gtest-filepath.cc
  |   +-googletest\src\gtest-internal-inl.h
  |   +-googletest\src\gtest-port.cc
  |   +-googletest\src\gtest-printers.cc
  |   +-googletest\src\gtest-test-part.cc
  |   +-googletest\src\gtest-typed-test.cc
  |   +-googletest\src\gtest.cc
  |   +-googletest\src\libgtest-all.a
  |     +-googletest\src\gtest-all.o
  |       +-googletest\src\gtest-all.cc
  |       +-googletest\src\gtest-death-test.cc
  |       +-googletest\src\gtest-filepath.cc
  |       +-googletest\src\gtest-port.cc
  |       +-googletest\src\gtest-printers.cc
  |       +-googletest\src\gtest-test-part.cc
  |       +-googletest\src\gtest-typed-test.cc
  |       +-googletest\src\gtest.cc
  |       +-googletest\src\gtest-internal-inl.h
  +-SConstruct
scons: building terminated because of errors.

我也试过在一行中构建库:env.StaticLibrary(source='googletest/src/gtest-all.cc') - 结果是一样的。

只要执行实际的 g++ 调用就可以得到我想要的目标文件。 让我感到困惑的是,SCons 应该将目标文件视为它自己创建的工件。我想知道为什么它会在完成之前尝试使用它。那我在这里错过了什么?如何让 SCons 等到编译完成?

顺便说一句:我只是有一些使用 SCons 的经验,并且偶尔会调整一个脚本 - 但我对它并没有真正的了解。

使用的版本:SCons 3.0.1,Python 3.6.3,MinGW 7.3.0

这个有用吗?

env = Environment(tools=['mingw','gnulink','ar'])  # You should specify the tools
env.Append(CPPPATH=['googletest/'])
env.Append(CCFLAGS=[('-isystem', 'googletest/include/'), '-pthread'])
obj = env.Object(source='googletest/src/gtest-all.cc')
# linking skipped due to error search
# env.Append(LINKFLAGS=['-rv'])
# bin = env.StaticLibrary(target='libgtest', source=[obj])