我可以通过在Repository()中提供路径来找到特定文件。 但是生成的输出是在Sconstruct目录而不是在 variant_dir。
具体解释问题 项目中的树结构如下所示。
.
|-- SConstruct
|--Build
| `-- SConscript_unitTest
|--FileB_mock.o
|--FileA.o
|-- _Output
| `-- unit_test
| |--FileA_unittest.o
`-- moduleA
| |-- FileA.cpp
| `-- UnitTest
| |-- FileA_unittest.cpp
| `-- SConscript
`-- moduleB
| |-- FileB.cpp
| `-- UnitTest
| |-- FileB_unittest.cpp
| `-- SConscript
`-- Mocks
`-- moduleA
| |-- FileA_mock.cpp
| `-- FileA_mock.h
`-- moduleB
|-- FileB_mock.cpp
`-- FileB_mock.h
对于上述结构,
在SConstruct中,我调用了SConscript_unitTest。
Sconscript_unitTest的实现是
'SConscript(' #\ moduleA \单元测试\ SConscript”, variant_dir ='#_Output \ unit_test'),duplicate = 0)'
moduleA \ UnitTest \ Sconscript的实现是
Sources = ['FileA_unittest.cpp', '#FileB_mock.cpp', '#FileA.cpp' ]
Repository( '#\ModuleA', '#\Mocks\ModuleB')
obj_files = Object(Sources)
Program(target_name, obj_files)
如Heirarchical图所示,FileA_unittest.o属于预期的variant_dir,但FileB_mock.o和FileA.o位于根文件夹中。
我不确定我在这里做的是最好的机制..因为我正在将现有的make项目翻译成scons。 希望我已经提供了足够详细的问题。