你需要在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
错误。如果我将类移动到根目录,那么我没有错误。
注意:在另一个目录中构建与此无关!我尝试在根目录中构建,但这没有改变任何东西! :)
答案 0 :(得分:2)
SCons Glob()函数 不 递归,因此您必须在源列表中添加每个子目录,如下所示:
env.Program(target='exec_test', source=[Glob('build/*.cpp'),
Glob('build/subdir1/*.cpp',
Glob('build/subdir2/*.cpp'])
这应该可行,或者你可以考虑创建一个分层构建,在每个子目录中创建一个SConscript脚本。