我正在考虑将SCons用于一个新项目。它看起来真的很好,虽然我觉得VariantDir
很混乱。
我有一个简单的项目,在一个目录中有几个 C 源文件,我想在“正常”和“配置文件”模式下构建——有两组不同的 gcc 选项。我希望输出分别进入 normal/ 和 profile/ 目录。
为了测试,我已经缩减到只有一个源文件 tc,其中有一个main()
。我的SConstruct
文件位于同一目录中,如下所示:
normal = DefaultEnvironment(tools=['mingw'], CCFLAGS = '-O2')
normal.VariantDir('release', '.', duplicate=0)
normal.Program('t', ['t.c'])
#profile = normal.Clone(CCFLAGS='-O2 -pg', LINKFLAGS = '-pg')
#profile.VariantDir('profile', '.', duplicate=0)
#profile.Program('t', ['t.c'])
当我运行 scons 时,我希望它把 t.exe 放到 release/ 中,但它把它们放在当前目录中。而且我根本无法在未注释的 3 个配置文件行的情况下运行它——如果这样做,我会收到此错误:
scons: *** 为同一个目标指定了两个具有不同操作的环境:to
基本上,我不确定为什么我的 VariantDir() 调用没有告诉 scons 将输出放在指定的输出目录中,release
.
(我在文档和新闻组中阅读了很多内容,但没有任何内容可以回答这个问题。我最接近的是这个页面,它描述了类似的东西,但它涉及一个单独的 src/ 目录和两个单独的 scons 文件, 以及在它们之间导入/导出变量。这似乎并不令人愉快。)