正常情况下, 执行完Madagascar命令后的二进制数据文件是存在/var/tmp/下的,实际我们在写自己就的项目的时候,一般最好是把数据文件和项目存在一起,这样管理起来比较方便。因此需要了解Madagascar存储文件时选择DATAPATH的优先级关系。具体见官方说明文档 http://www.ahay.org/wiki/Guide_to_RSF_file_format。

简述如下:

  • 查看命令行是否含--out=XXX参数,如果有,则按其指定的方式进行存储,没有则继续进行下面的操作
  • 查看命令行是否含datapath=XXX参数,如果有,则按按其指定的路径进行存储,没有则继续进行下面的操作
  • 查看当前路径下是否含.datapath文件,如果有,则按该文件内指定的路径进行存储,没有则继续进行下面的操作
  • 查看当前用户的根目录下是否含.datapath文件,如果有,则按该文件内指定的路径进行存储,没有则继续进行下面的操作
  • 查看系统的环境变量是否含DATAPATH变量,如果有,则按该环境变量指定的路径进行存储,没有则继续进行下面的操作
  • 以上都没有的话,会直接将二进制存在当前工作路径下。

因此,为了保证项目的完整型,选择第二种方式进行处理。即首先进入当前工作路径,然后在该路径下建立一个data/目录,用于存放数据。其次,在当前目录下新建一个.datapath文件,并在该文件中输入如下内容

datapath=./data/ # 注意data后面必须跟一个/,表示这个是一个目录文件。

最后写SConstruct脚本的时候就不需要在每个命令里添加--out=stdout了。所有的数据文件都会存储至data/目录下。