gpt4 book ai didi

c++ - 使用包含子目录的 Scons 构建

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:48:07 26 4
gpt4 key购买 nike

你必须在 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 错误。如果我将类移动到根目录,那么我不会收到任何错误。

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

最佳答案

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

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

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

关于c++ - 使用包含子目录的 Scons 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19484261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com