Сборка смарт-контрактов¶
Описаны сценарии сборки из командной строки и через CMake. Семантика вызовов из тела контракта, intrinsic-функции и состав библиотеки — в документации CDT (Doxygen).
Сборка через CLI¶
Что нужно заранее¶
- Исходники контракта в локальной папке (ниже — пример
examples/hello).
Шаги¶
- Перейдите в каталог с контрактом, где лежит например
src/hello.cpp. - Выполните:
Где:
../src/hello.cpp— входной файл;-o hello.wasm— имя выходного WASM;-
-I ../include/— путь к заголовкам (при необходимости). -
Убедитесь, что появились
hello.wasmи сгенерированныйhello.abi(если включена генерация ABI, например через-abigenили атрибуты в коде — зависит от вашего сценария).
Опечатка в старых гайдах
В некоторых инструкциях ошибочно писали cdt--cpp — корректная команда cdt-cpp.
CMake: быстрый старт через cdt-init¶
cd ~
cdt-init --path=. --project=test_contract
cd test_contract/build
cmake ..
make
ls -al test_contract
В каталоге проекта появятся test_contract.wasm и test_contract.abi, готовые к публикации.
CMake: ручной CMakeLists.txt¶
Минимальный пример.
CMakeLists.txt:
cmake_minimum_required(VERSION 3.5)
project(test_example VERSION 1.0.0)
find_package(cdt)
add_contract( test test test.cpp )
test.cpp:
#include <eosio/eosio.hpp>
using namespace eosio;
class [[eosio::contract]] test : public eosio::contract {
public:
using contract::contract;
[[eosio::action]] void testact( name test ) {
}
};
Полезные макросы¶
| Макрос | Назначение |
|---|---|
add_contract |
Сборка контракта и генерация ABI. Первый аргумент — имя контракта, второй — имя CMake-таргета, далее — список .cpp. |
target_ricardian_directory |
Каталог с Ricardian-текстами для конкретного таргета. |
add_native_library / add_native_executable |
Нативная сборка для юнит-тестов; см. документацию CDT и примеры в репозитории CDT. |
Сборка примера hello через CMake¶
Если в репозитории примеров уже есть CMakeLists.txt:
Проверьте наличие hello.wasm и hello.abi.
Нативная сборка для тестов¶
Для проверки логики вне WASM укажите -fnative для cdt-cpp / cdt-cc либо примените CMake-макросы add_native_*. Макросы EOSIO_TEST_* и нативный рантайм тестов описаны в документации CDT и в каталоге примеров CDT.