¿Cómo agrego una dependencia de biblioteca en un proyecto de Azure Sphere Visual Studio?

 C Programming >> Programación C >  >> Tags >> Azure
¿Cómo agrego una dependencia de biblioteca en un proyecto de Azure Sphere Visual Studio?


Estoy creando una aplicación de Azure Sphere C, a partir del proyecto de ejemplo HTTPS_Curl_Easy. Necesito el análisis json, así que descargué el código de la biblioteca Jansson. El proyecto que genera Jansson cuando usa Cmake no se agregaría como referencia a mi proyecto Sphere, porque se dirige a Win32, así que creé un proyecto de biblioteca de esfera de Azure vacío, copié todo el código de jansson en él y me metí con las variables definidas hasta que proyecto compilado.


Ahora estoy tratando de agregar esa biblioteca Jansson a mi muestra HTTPS_Curl_Easy, sin embargo, no puedo hacer que esté disponible en el proyecto (dice que jansson.h no está disponible):


Dos preguntas específicas:



  1. En un proyecto de biblioteca de Azure Sphere, ¿cómo le digo qué exportar? La plantilla del proyecto tenía una carpeta Inc\Public. ¿Tiene que estar allí el archivo de encabezado? (el mío no es porque la fuente no se construiría allí)


  2. ¿Cómo debo agregar una referencia a un proyecto de biblioteca en un proyecto de Azure Sphere? Hice clic derecho en el proyecto y luego en agregar->referencia para agregar mi proyecto de biblioteca jansson_sphere, pero aunque está en el archivo del proyecto, no aparece en ninguna lista de dependencias que pude encontrar.



La fuente de mi proyecto y mi intento de construir Jansson está en github aquí:https://github.com/Joon/HTTPS_Curl_Easy


Respuestas:


Para agregar una biblioteca externa a una compilación de Azure Sphere, debe actualizar el archivo CMakeLists.txt.


A continuación se muestra un ejemplo del archivo CMakeLists.txt que funcionará, y aquí hay un enlace a un repositorio que muestra una biblioteca externa que realiza un retraso y parpadea el LED1 en la RDB MT3620.


https://github.com/AdamBaumgartner42/azsphere_ext_library


Archivo CMakeLists.txt actualizado


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