我一直在使用cmake从源代码构建我的项目,这非常方便,因为您避免使用不必要的文件污染您的源目录。
假设CMakeLists.txt在当前目录中,可以按如下方式完成:
mkdir build
cd build
cmake ..
make
我如何在scons中做同样的事情?
答案 0 :(得分:11)
在SConstruct
文件中,您使用的是变体目录:
SConscript("main.scons", variant_dir="build", duplicate=0)
然后在main.scons
中像往常一样设置所有内容:
env = Environment()
env.Program(target='foo', source=Split('foo.c bar.c'))
可以通过(ab)使用存储库将变量目录硬编码到SConstruct中,但这种方法有其缺陷。对于记录,您将按如下所示运行上面的内容以构建另一个目录:
mkdir mybuild
cd mybuild
scons -Y .. -f ../main.scons
最简单,最可行的方法就是使用variant_dir
。然后,您可以像往常一样从顶级源目录运行它。所有构建工件都在build
子目录中生成。
回应JesperE的评论,以下是如何编写顶级SConstruct以添加可选命名的构建目录:
AddOption('--build', default='build')
SConscript("main.scons", variant_dir=GetOption('build'), duplicate=0)
然后你可以从命令行调用它,如下所示,创建一个名为“baz”的构建目录:
$ scons --build=baz