我在考虑用SCons做一个新项目。它看起来很不错,不过我发现VariantDir
相当混乱。
我有一个简单的项目,在一个目录中有几个C源文件,我想在“normal”和“profile”模式下构建——gcc有两组不同的选项。我希望输出分别位于normal/和profile/目录中。
为了测试,我缩减到只有一个源文件t.c,其中有一个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.o和t.exe放入release/,但它将它们放入当前目录。如果3个配置文件行没有注释,我根本无法运行它——如果我这样做了,我会得到以下错误:
scons:**为同一目标指定了两个具有不同操作的环境:t.o
基本上,我不确定为什么我的VariantDir()调用没有告诉scons将输出放到指定的输出目录release
。
(我在文档和新闻组里读过不少,但没有任何东西能回答这个问题。)。最接近的是this page,它描述了类似的事情,但是它涉及一个单独的src/目录和两个单独的scons文件,以及它们之间的导入/导出变量。这似乎不太令人愉快。)
正如http://www.scons.org/wiki/VariantDir%28%29所说
当我在Linux上用
scons
运行它时。我想它也适用于Win32
是的,VariantDir在scons中很混乱。尽管没有很好地宣传,但是您可以将SConstruct和SConscript放在同一个目录中,使用当前目录作为源目录
以及
我从来没有找到一种方法来避免使用两个文件,同时保持理智,试图理解variant dir:)
我可以使用此调用在生成目录中分离二进制文件:
如果要将二进制文件放入以下两级目录中,请执行以下操作:
基本上,提供
src_dir
参数作为从生成目录返回源目录的路径。相关问题 更多 >
编程相关推荐