8
我一直在使用cmake构建我的项目,这非常方便,因为您可以避免使用不必要的文件污染源目录。用scons构建源代码?
假设的CMakeLists.txt是在当前目录中,这可能如下进行:
mkdir build
cd build
cmake ..
make
我怎么可以这样做的scons的?
我一直在使用cmake构建我的项目,这非常方便,因为您可以避免使用不必要的文件污染源目录。用scons构建源代码?
假设的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'))
这是可能做到这一点没有硬编码变异DIR成由(ab)使用存储库构造SConstruct,但该方法有其缺陷。根据记录,你可以按如下方式建立在另一个目录中运行上面:
mkdir mybuild
cd mybuild
scons -Y .. -f ../main.scons
最简单,最可行的是只使用variant_dir
。然后,您可以像平常一样从顶级源目录中运行该程序。所有构建文物都在build
子目录中生成。
针对JesperE的评论,这里是你如何编写顶级SConstruct添加一个可选命名为build目录:
AddOption('--build', default='build')
SConscript("main.scons", variant_dir=GetOption('build'), duplicate=0)
然后您可以按如下从命令行调用该方法,以创建一个名为“巴兹”一个build目录:
$ scons --build=baz
但是你不能只通过'variant_dir'参数的值作为命令行参数,以避免硬编码? – JesperE 2010-01-02 08:05:52
你可以,但你必须记得每次将它传递给'scons'命令行。 – richq 2010-01-02 14:09:54