免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1600 | 回复: 1
打印 上一主题 下一主题

[Linux] 一个困扰了很久的Scons的缺陷…… [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-29 16:34 |只看该作者 |倒序浏览
一直想用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呢?

论坛徽章:
0
2 [报告]
发表于 2012-10-08 16:12 |只看该作者
上面描述有误,按我上面这个是可以的,如果写成这样就不行了:
目录结构:
/home/user/test/
                 SConstruct
                src/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/','./src/',duplicate=0)
env.Program('/home/user/objs/hello', '/home/user/objs/hello.c')
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP