编译合约文件

编译合约文件

合约的位置

所有的合约文件都位于你项目中的 contracts/ 目录下。合约文件是用Solidity这个语言来编写的,所有包含合约的文件都有一个.sol的扩展名。相关联的Solidity的库也会有一个.sol的文件扩展名。

一个通过truffle init创建的项目都会有一个单一的Migrations.sol文件会在部署过程中有所帮助。如果你使用的是Truffle Box, 这里会有多样的文件。

使用truffle init 创建项目后的合约目录文件图示:
这里写图片描述
使用truffle box创建项目后的合约目录文件图示:
这里写图片描述

编译合约的命令

编译命令:truffle compile

官方文档中说要在truffle项目的根目录执行这个命令,但是本人在测试过程中发现不可行。需要进入truffle项目的合约目录进行编译。
测试示例:
在turffle项目根目录进行编译:
这里写图片描述

在truffle项目的合约目录进行编译:
这里写图片描述

第一次执行该命令,所有的合约文件将会被编译。在之后的运行过程中,truffle只会编译那些在上一次编译完成后发生改变的的合约文件。如果你想重写这些行为,使用–all选项来运行上述的命令。命令:truffle compile --all
示例:
这里写图片描述

BUILD ARTIFACTS

编译器的工件将在build/contracts/这个目录中被替代,相对于项目的根目录。如果这个目录不存在,将会被创建。

这些工件是truffle内部工作的一部分,它们在成功的部署你的应用中扮演着很重要的角色。你不能编辑这些文件,因为它们会在合约编译和部署时被重写。

依赖

你可使用Solidity里的import命令来声明合约的依赖。Truffle将会在正确的命令下编译这些合约,并确保所有的依赖都发送给编译器。依赖关系可以通过两种方式来指定。

通过文件名称导入依赖

从一个单独的文件中导入合约,在你的Solidity源码文件中增加下面的代码:

import "./AnotherContract.sol";

这将使所有的合约都在AnotherContract.sol之内。在这里,AnotherContract.sol是相对于当前书面合约的路径的。

注意:Solidity 也允许导入其它的语法,更多的关于导入的语法可以参考这个链接:http://solidity.readthedocs.io/en/latest/layout-of-source-files.html#importing-other-source-files

从外部包导入合约文件

Truffle 是支持通过EthPM和NPM安装的依赖包,从一个依赖项目导入合约,通过以下的语法:

import "somepackage/SomeContract.sol";

这时,somepackage表示一个EthPM和NPM安装的包,SomeContract.sol表示这个包提供的Solidity提供的源文件。
Truffle 将会先寻找通过EthPM安装的包,然后再寻找通过NPM安装的包,因此,在命名冲突的情况下,通过EthPM安装的包将被使用。

关于如何使用Truffle的包管理特性,可以查看EthPMNPM 的文档。

参考链接:http://truffleframework.com/docs/getting_started/compile

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值