- 论坛徽章:
- 0
|
一直想用scons代替make重新构建项目,因为python写起来比makefile要好用的多,但一个问题一直困扰我,没办法用起来,大家帮忙看看有没有办法解决。
我们所使用的开发环境都是通过cifs方式把windows的目录挂载到linux服务器上进行代码编译的,有一个硬性的要求,就是编译的中间文件.o和生成的可执行文件.bin不能生成在挂载目录下(为了安全,挂载的目录通常不开写权限的)。
这也就要求socs能实现代码和编译生成的文件分离,即我通过Linux的服务器进入到挂载的目录编译,生成的中间文件和可执行文件能产生在挂载目录以外的目录,比如:挂载目录为/home/user/mnt,中间文件和可执行文件打算生成到/home/user/objs/。
通过多次试验只能实现把中间文件生成到/home/user/objs/目录,可执行文件怎么也生成不了。下面是我所做的测试:
目录结构:
/home/user/test/
SConstruct
hello.c
hello.c内容:
#include <stdio.h>
int main(void)
{
printf("hello\n");
return 0;
}
SConstruct内容:
import os
env=Environment(ENV = os.environ)
VariantDir('/home/user/objs/', './', duplicate=0)
env.Program('/home/user/objs/hello', '/home/user/objs/hello.c')
cd到/home/user/test/执行scons结果是:
可以生产/home/user/objs/hello.o
无法生成/home/user/objs/hello
如果改成env.Program('hello', '/home/user/objs/hello.c')
就可以在当前目录(/home/user/test)生成hello
我如何才能在/home/user/objs/下生成hello呢?
|
|