Starting from scratch

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 git submodules.

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})

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 🥳

Last updated