Scons构建包括来自子目录

时间:2013-10-20 23:51:53

标签: c++ scons

你需要在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错误。如果我将类移动到根目录,那么我没有错误。

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

1 个答案:

答案 0 :(得分:2)

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

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

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