c++ - Códigos de archivos múltiples para Arduino para Visual Studio Code

CorePress2024-01-16  7

Estoy usando VS Code con un Arduino Mega y estoy tratando de encontrar la mejor manera de implementar un flujo de trabajo de múltiples archivos. Hasta ahora he podido incorporar un archivo de encabezado, sin embargo, no estoy seguro de cómo hacer que la extensión incluya los otros archivos .cpp en la compilación.

Estructura de carpetas actual:

-Workspace
---main
-----main.ino
---src
-----add.cpp
-----add.h

Así que compila bien main.ino e incluye bien el encabezado, pero, por supuesto, no está compilando add.cpp. Esto no es inesperado, ya que no le he dicho al compilador que lo incluya. Para la compilación de g++, siempre he incluido los archivos .cpp como argumentos, es decir, "${fileDirname}\*.cpp", en task.json. No puedo encontrar buenas instrucciones sobre cómo hacer algo similar usando la extensión Arduino para VS Code. ¿Cuál es la mejor manera de hacer que VS Code cree todos los archivos .cpp relevantes?o Arduino?

¡Gracias!



------------------------------------

Simple y llanamente usando el complemento gratuito de platformio para vs code. La mejor solución que encontré para trabajar con arduino.

Este complemento es confiable, independiente de la plataforma, de código abierto y puede administrar proyectos con archivos de encabezado y la vinculación y compilación se realiza mediante diálogo. Además, la documentación está bien escrita.

Espero que te diviertas programando tanto como yo :)

2

De nada :) Ahora me encanta escribir código arduino, seguro que a ti también te gustará :)

-Ingo Mi

19/03/2021 a las 19:15

1

PlatformIO funcionó aquí. Mucho más fácil de usar y pude colocar todos los archivos dependientes en el directorio /src, y se compiló y cargó sin problemas. ¡Gracias!

- MatArnold

19/03/2021 a las 19:31



------------------------------------

El archivo cpp debería haber sido compilado pero vinculado si es necesario. No es necesario decirle al compilador que compile ese archivo. Simplemente incluya el archivo de encabezado en ambos archivos: main.cpp y add.cpp.

Su archivo de encabezado debe ser similar a este

#ifndef ADD_H__
#define ADD_H__

//All your code

#endif //ADD_H__

Este truco del precompilador le permitirá incluir su encabezado en cualquier lugar pero evitará las redefiniciones.

1

Tienes razón, esto parece funcionar para archivos .cpp y .h que están en la carpeta raíz del proyecto (al lado del archivo .ino). lo haceLos archivos ya no funcionan cuando estos archivos adicionales se mueven a una subcarpeta como "src". como se describe en la pregunta.

-Ingmar

1 de mayo de 2022 a las 16:13



------------------------------------

He encontrado una solución temporal a este problema, no lo sé ahora si es buena, en términos de las pautas de codificación profesional.

Digamos que tenemos la siguiente estructura:

-Workspace
---main
-----main.ino
---src
-----add.cpp
-----add.h

luego en principal:

#include <Wire.h>
#include "src/add.h"

void setup(){
    your code here
}

contine the code.

luego en add.h:

#ifndef _ADD_H_
#define _ADD_H_

Your code

#include "add.cpp"
#endif

y en add.cpp:

#include "add.h"

your code comes here

Entonces el código fuente para agregar la biblioteca también debería compilarse. Luché con un problema similar y encontré este hilo. Esta solución que propongo funciona para mí, sint el uso de platform.io (que no era una opción para mí). Pero como dije, no sé si esto se ajusta a algunas pautas de codificación profesionales.

Compartir mejorar esta respuesta Seguir respondido

30 de mayo de 2022 a las 18:49

Lars Hartman

Lars Hartman

1

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare