我一直使用cmake为你避免不必要的文件污染源目录中建立我伸出来源,这实在是方便的。

假设的CMakeLists.txt在当前目录,这可以如下进行:

mkdir build
cd build
cmake ..
make

我怎么可以这样做的scons的?

有帮助吗?

解决方案

在您的SConstruct文件,可以使用一个变种DIR:

SConscript("main.scons", variant_dir="build", duplicate=0)

然后,在main.scons设置了一切照常:

env = Environment()
env.Program(target='foo', source=Split('foo.c bar.c'))

这是可能做到这一点没有硬编码使用存储库的变种目录到SConstruct由(AB),但这种方法有其缺陷。根据记录,你可以按如下方式建立在另一个目录中运行上面的:

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)

然后你会在命令行如下调用此方法,以创建一个名为“巴兹”一个build目录:

$ scons --build=baz
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top