Por que um arquivo `.ino` precisa estar em uma pasta com o mesmo nome?


12

Estou tentando organizar um projeto muito complicado e quero colocar todo o código real em uma pasta chamada src(fonte), mas quero manter o .inoarquivo principal como main.ino(ele também estará src). Então, quando tento abrir o código, o IDE diz que main.inodeve estar em uma pasta chamada main.

Por que é isso?

Entendo perfeitamente a mensagem de erro, mas por que o nome do arquivo no Arduino precisa ser assim? Existe uma maneira de mudar isso?

Respostas:


6

AFAIK, que é uma peculiaridade incorporada ao IDE do Arduino. A melhor solução que posso pensar é em uma estrutura de arquivos, algo como:

ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
                                  + myproj.ino    + sensor.h
                                                  + sensor.cpp
                                                  + (more files)

, onde myproj.cpp é apenas #includemain.cpp. Isso deve deixar os arquivos do projeto "limpos", para que também funcionem em um ambiente mais típico.

Atualizar:

Peguei emprestado o nome "main" da sua pergunta, mas, refletindo, "main" é um nome reservado, especificamente, todo programa em C ou C ++ tem um main.c ou main.cpp como código de nível superior, fornecido pelo sistema se você não fornece um. Portanto, evitei usá-lo como nome da pasta e do projeto (mas fique à vontade para experimentá-lo) e atualizei o diagrama. O que você precisa é de uma pasta do projeto e um arquivo .ino, com o mesmo nome. O arquivo .ino pode

#include <src/anything-else-you-like>

, por exemplo, seu arquivo de código de nível superior, puxando todo o resto. Você pode precisar do seu .ino para #includecada um dos arquivos da srcpasta, se o compilador não descobrir por si só, é aí que estão os outros arquivos.

BTW, se você usar o nome main.cpp para o seu arquivo principal, ele precisará chamar as funções setup () e loop () (e a função de evento serial, se você usá-lo). Provavelmente é melhor deixar o nome 'main' sozinho, deixar o sistema fornecer o mesmo main todos os programas do Arduino, por padrão, e escrever o código do seu projeto da maneira típica do Arduino - começando com setup () e loop ().


myproj.cppvocê quer dizer myproj.ino? Porque eu não vejo onde myproj.cppestá!
Dat Ha

Ok, pequeno problema, se eu fizer isso, algumas funções básicas do Arduino (como map () e analogRead ()) que estão contidas no sensor.cpp não serão reconhecidas pelo compilador.
Dat Ha

Como alternativa, se estiver trabalhando em uma caixa do Windows, use o comando junction e "vincule" um diretório de nome corretamente ao diretório com o melhor nome. Ou, se estiver trabalhando em uma caixa Linux, use o comando de link simbólico para fazer o mesmo.
ST2000

(Veja minha atualização - seu arquivo .ino pode ter que incluir cada um dos outros arquivos).
JRobert

3

Quando você tem um projeto composto por vários .INOarquivos, como o IDE deve saber qual é o "principal"? Durante a compilação, o IDE concatena todos os .INOarquivos juntos em um arquivo monolítico. Faz isso começando com o "principal" e, em seguida, acrescenta cada um dos outros em ordem alfabética ao final.

Isso é feito dessa maneira para que suas variáveis ​​globais e inclusas, que você deve colocar no .INOarquivo "principal" , estejam no início do programa finalizado.

Para fazer isso, o IDE precisa saber qual dos arquivos é o "principal". E a maneira como isso funciona é encontrar aquele que tem o mesmo nome da pasta em que o esboço está.

No UECIDE, dou um passo adiante e transformo a pasta inteira em um documento composto, para que você não precise mais entrar em uma pasta e abrir um .INOarquivo para abrir um esboço - a própria pasta é o projeto inteiro do esboço. Novamente, esse tipo de pasta é identificado como tendo um .INOarquivo com o mesmo nome da pasta.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.