Reputation: 2147
I am building an Azure Sphere C application, starting from the HTTPS_Curl_Easy sample project. I need json parsing, so I downloaded the Jansson library code. The project that Jansson generates when using Cmake wouldn't add as a reference to my Sphere project, because it targets Win32, so I created an empty Azure sphere library project, copied all the jansson code into it and messed with the defined variables until the project compiled.
Now I am trying to add that Jansson library to my HTTPS_Curl_Easy sample, however I cannot get it to be available in the project (It says jansson.h is not available):
Two specific questions:
In an azure Sphere library project, how do I tell it what to export? The project template had an Inc\Public folder - does the header file have to be in there? (mine isn't because the source wouldn't build with it in there)
How should I add a reference to a library project in an Azure Sphere project? I right-clicked the project and clicked add->reference to add my jansson_sphere library project, but although it is in the project file it doesn't show in any dependency list that I could find.
Source for my project and my attempt to build Jansson is in github here: https://github.com/Joon/HTTPS_Curl_Easy
Upvotes: 5
Views: 206
Reputation: 92
To add an external library to an Azure Sphere build, you need to update the CMakeLists.txt file.
Below is an example of the CMakeLists.txt file which will work, and here is a link to a repository showing an external library which performs a delay and blinks LED1 on the MT3620 RDB.
https://github.com/AdamBaumgartner42/azsphere_ext_library
Updated CMakeLists.txt file
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
cmake_minimum_required (VERSION 3.10)
project (azsphere_ext_library C)
azsphere_configure_tools(TOOLS_REVISION "21.07")
azsphere_configure_api(TARGET_API_SET "10")
# External Library Add
add_library(MyStaticLib STATIC delay.c)
# Create executable
add_executable (${PROJECT_NAME} main.c)
# add the external library to the "target_link_libraries" list
target_link_libraries (${PROJECT_NAME} MyStaticLib applibs pthread gcc_s c)
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
azsphere_target_add_image_package(${PROJECT_NAME})
Upvotes: 1