Come si aggiunge una dipendenza dalla libreria in un progetto Azure Sphere Visual Studio?

Come si aggiunge una dipendenza dalla libreria in un progetto Azure Sphere Visual Studio?


Sto creando un'applicazione Azure Sphere C, partendo dal progetto di esempio HTTPS_Curl_Easy. Ho bisogno dell'analisi json, quindi ho scaricato il codice della libreria Jansson. Il progetto che Jansson genera quando si utilizza Cmake non viene aggiunto come riferimento al mio progetto Sphere, perché ha come target Win32, quindi ho creato un progetto di libreria della sfera di Azure vuoto, ho copiato tutto il codice jansson e ho incasinato le variabili definite fino a quando progetto compilato.


Ora sto cercando di aggiungere quella libreria Jansson al mio esempio HTTPS_Curl_Easy, tuttavia non riesco a renderla disponibile nel progetto (dice jansson.h non è disponibile):


Due domande specifiche:



  1. In un progetto di libreria Sphere di azzurro, come faccio a dirgli cosa esportare? Il modello di progetto aveva una cartella Inc\Public:il file di intestazione deve essere lì? (il mio non è perché la fonte non costruisce con esso)


  2. Come devo aggiungere un riferimento a un progetto di libreria in un progetto Azure Sphere? Ho fatto clic con il pulsante destro del mouse sul progetto e ho fatto clic su aggiungi->riferimento per aggiungere il mio progetto di libreria jansson_sphere, ma sebbene sia nel file di progetto non viene visualizzato in nessun elenco di dipendenze che sono riuscito a trovare.



La fonte per il mio progetto e il mio tentativo di creare Jansson è in github qui:https://github.com/Joon/HTTPS_Curl_Easy


Risposte:


Per aggiungere una libreria esterna a una build di Azure Sphere, è necessario aggiornare il file CMakeLists.txt.


Di seguito è riportato un esempio del file CMakeLists.txt che funzionerà, ed ecco un collegamento a un repository che mostra una libreria esterna che esegue un ritardo e lampeggia il LED1 sull'MT3620 RDB.


https://github.com/AdamBaumgartner42/azsphere_ext_library


File CMakeLists.txt aggiornato


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