Visual Studio 代码的 Arduino 多文件代码
Multi File Codes for Arduino for Visual Studio Code
我正在将 VS Code 与 Arduino Mega 一起使用,我正在尝试找出实现 multi-file 工作流程的最佳方法。到目前为止,我已经能够合并一个 header 文件,但是我不确定如何获得扩展以将其他 .cpp 文件包含到构建中。
当前文件夹结构:
-Workspace
---main
-----main.ino
---src
-----add.cpp
-----add.h
所以它可以很好地构建 main.ino,并且可以很好地包含 header,但当然它不会编译 add.cpp。这并不意外,因为我没有告诉编译器包含它。对于 g++ 编译,我总是只包含 .cpp 文件作为参数,即 tasks.json 中的“${fileDirname}\*.cpp”。我找不到关于如何使用 Arduino for VS Code 扩展执行类似操作的任何好的说明。让 VS Code 为 Arduino 构建所有相关 .cpp 文件的最佳方法是什么?
谢谢!
通过使用免费的 platformio plugin for vs 代码,简单明了。我找到的使用 arduino 的最佳解决方案。
该插件可靠、平台无关、开源,您可以使用头文件管理项目,链接和编译通过对话完成。文档也写得很好。
我希望你和我一样喜欢用它编程:)
cpp 文件应该已编译,但如果需要则链接。您不需要告诉编译器编译该文件。只需在两个文件中包含 header 文件:main.cpp 和 add.cpp.
您的 header 文件必须类似于此
#ifndef ADD_H__
#define ADD_H__
//All your code
#endif //ADD_H__
这个预编译器技巧将允许您在任何地方包含您的 header,但会阻止重新定义。
我找到了这个问题的临时解决方案,如果它是一个好的,就专业编码指南而言,现在不要。
比如说,我们有以下结构:
-Workspace
---main
-----main.ino
---src
-----add.cpp
-----add.h
然后在 main:
#include <Wire.h>
#include "src/add.h"
void setup(){
your code here
}
contine the code.
然后在 add.h:
#ifndef _ADD_H_
#define _ADD_H_
Your code
#include "add.cpp"
#endif
在add.cpp中:
#include "add.h"
your code comes here
然后库 add 的源代码也应该被编译。
我遇到了一个类似的问题,并找到了这个线程。我提出的这个解决方案适用于我,无需使用 platform.io(这对我来说不是一个选项)。但是就像我说的,我不知道这是否符合一些专业的编码指南。
我正在将 VS Code 与 Arduino Mega 一起使用,我正在尝试找出实现 multi-file 工作流程的最佳方法。到目前为止,我已经能够合并一个 header 文件,但是我不确定如何获得扩展以将其他 .cpp 文件包含到构建中。
当前文件夹结构:
-Workspace
---main
-----main.ino
---src
-----add.cpp
-----add.h
所以它可以很好地构建 main.ino,并且可以很好地包含 header,但当然它不会编译 add.cpp。这并不意外,因为我没有告诉编译器包含它。对于 g++ 编译,我总是只包含 .cpp 文件作为参数,即 tasks.json 中的“${fileDirname}\*.cpp”。我找不到关于如何使用 Arduino for VS Code 扩展执行类似操作的任何好的说明。让 VS Code 为 Arduino 构建所有相关 .cpp 文件的最佳方法是什么?
谢谢!
通过使用免费的 platformio plugin for vs 代码,简单明了。我找到的使用 arduino 的最佳解决方案。
该插件可靠、平台无关、开源,您可以使用头文件管理项目,链接和编译通过对话完成。文档也写得很好。
我希望你和我一样喜欢用它编程:)
cpp 文件应该已编译,但如果需要则链接。您不需要告诉编译器编译该文件。只需在两个文件中包含 header 文件:main.cpp 和 add.cpp.
您的 header 文件必须类似于此
#ifndef ADD_H__
#define ADD_H__
//All your code
#endif //ADD_H__
这个预编译器技巧将允许您在任何地方包含您的 header,但会阻止重新定义。
我找到了这个问题的临时解决方案,如果它是一个好的,就专业编码指南而言,现在不要。
比如说,我们有以下结构:
-Workspace
---main
-----main.ino
---src
-----add.cpp
-----add.h
然后在 main:
#include <Wire.h>
#include "src/add.h"
void setup(){
your code here
}
contine the code.
然后在 add.h:
#ifndef _ADD_H_
#define _ADD_H_
Your code
#include "add.cpp"
#endif
在add.cpp中:
#include "add.h"
your code comes here
然后库 add 的源代码也应该被编译。 我遇到了一个类似的问题,并找到了这个线程。我提出的这个解决方案适用于我,无需使用 platform.io(这对我来说不是一个选项)。但是就像我说的,我不知道这是否符合一些专业的编码指南。