2

您必须在 SConstruct 文件中编写什么代码,以便在构建子目录中包含的所有类时编译?目前我的 SConstruct 文件如下所示:

VariantDir('build', '.')
env=Environment(CPPPATH=['#'],
                CPPDEFINES=[],
                LIBS=['-lpng', '-lassimp', '-lglfw3', '-lGLEW', '-lGLU', '-lGL', '-lX11', '-lXxf86vm', '-lXrandr', '-lpthread', '-lXi'],
                CXXFLAGS="-std=c++11")
env.Program(target='exec_test', source=[Glob('build/*.cpp')])

当我构建我的项目undefined reference to时,在子目录中的类中调用方法时会出错。如果我将类移动到根目录,则不会出现错误。

注意:在另一个目录中构建与此无关!我尝试在根目录中构建,但这并没有改变任何东西!:)

4

1 回答 1

2

SCons Glob()函数不是递归的,因此您必须在源列表中添加每个子目录,如下所示:

env.Program(target='exec_test', source=[Glob('build/*.cpp'),
                                        Glob('build/subdir1/*.cpp',
                                        Glob('build/subdir2/*.cpp'])

这应该可行,或者您可以考虑创建一个分层构建,从而在每个子目录中创建一个 SConscript 脚本。

于 2013-10-21T05:44:10.337 回答