Vertices Docs
  • Welcome 👨‍💻
  • ⚙️ Vertices SDK
    • Quickstart
      • Unix
        • New account
        • Pay transaction
        • Application call
      • Microcontrollers
        • PlatformIO
        • ESP-IDF
        • Zephyr (soon)
    • API Reference
      • Providers
      • Accounts
      • Events
      • Transactions
      • Applications
    • Porting guide
      • Starting from scratch
      • New vertex
      • HTTP Client
      • Handling events
Powered by GitBook
On this page
  • New project
  • CMake
  • The missing link

Was this helpful?

  1. ⚙️ Vertices SDK
  2. Porting guide

Starting from scratch

PreviousPorting guideNextNew vertex

Last updated 3 years ago

Was this helpful?

New project

The Vertices SDK is built to be included in any project as an external component.

The best way to achieve this is probably to make use of .

So let's say we have a clean repository with empty directories:

  • external: I like to have a directory keeping external libs

  • components: provided by the SDK you are building on

  • myproject: the source code your team is writing

  • utils: some scripts and tools that are useful

  • build: generated build files

mkdir porting_guide
cd porting_guide
mkdir external components myproject utils build

The structure is alive. Let's get the SDK.

# init directory as a git repository
git init
# clone SDK into external/c-vertices-sdk
git submodule add https://github.com/vertices-network/c-vertices-sdk external/c-vertices-sdk
# update submodules of the SDK itself
git submodule update --init --recursive
# check content of the SDK
ls external/c-vertices-sdk

Let's create a main.c file with the minimum content:

touch myproject/main.c
#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("Hello world\n");

    return 0;
}

CMake

We can now init our project with two CMake files that will be used to build the entire project:

touch CMakeLists.txt myproject/CMakeLists.txt

Here is the minimum content of the root CMakeLists.txt:

cmake_minimum_required (3.20)
project (porting_guide)

# adding the Vertices SDK
add_subdirectory(external/c-vertices-sdk)

# adding the User code
add_subdirectory(myproject)

Now we can add our main.c file into myproject/CMakeLists.txt:

set(PROJECT_NAME myproject)
project(${PROJECT_NAME})

# add source file related to that project
set(SRC_FILES
        main.c
        )

# Add directories to include below (headers folders)
set(INC_FOLDERS
        )

include_directories(${INC_FOLDERS})
add_executable(${PROJECT_NAME} ${SRC_FILES})

The missing link

Before we can start including headers from the Vertices SDK, we need to add the library into myproject :

At the end of myproject/CMakeLists.txt, append that line:

target_link_libraries(${PROJECT_NAME} vertices)

Now you can include the Vertices header in the main file:

#include "vertices.h" // ready to use the Vertices SDK library

There are still some missing parts that will be covered in the next chapters.

Follow the next step to get our implementation of those first two steps 🥳

git submodules