Customização da Estrutura de Diretórios no ESP-IDF


{getToc} $title={Índice}

Introdução

No desenvolvimento de projetos com o ESP-IDF (Espressif IoT Development Framework), a organização e padronização dos diretórios são essenciais para garantir uma estrutura clara e eficiente. Este artigo descreve uma abordagem para modificar a estrutura padrão de diretórios do ESP-IDF, facilitando a adição de novos componentes e mantendo a organização do projeto.

Diretório Padrão de Projetos com ESP-IDF

Por padrão, o ESP-IDF usa uma estrutura de diretórios bem definida:

  • main: Contém o código principal do aplicativo.
  • components: Contém os componentes reutilizáveis do projeto.

Esta estrutura é simples e funciona bem para muitos casos. No entanto, quando se trabalha em projetos maiores ou quando a empresa requer uma padronização específica, pode ser necessário alterar esses nomes de diretórios.

Como Modificar os Nomes de Diretório do Seu Projeto

Para adaptar a estrutura de diretórios às necessidades da sua empresa, você pode renomear os diretórios e atualizar o arquivo CMakeLists.txt para refletir essas mudanças. A seguir, apresentamos uma solução para alterar os nomes das pastas de main para custom_applications e de components para custom_components.

1. Renomeando os Diretórios

Renomeie os diretórios no seu projeto para os novos nomes desejados:

  • main -> custom_applications
  • components -> custom_components

2. Atualizando o CMakeLists.txt

Modifique o arquivo CMakeLists.txt na pasta custom_applications (anteriormente main) para tornar a inclusão de componentes mais dinâmica. O código atualizado é o seguinte:

```Cmake
cmake_minimum_required(VERSION 3.16)
file(GLOB COMPONENT_DIRS "${CMAKE_CURRENT_LIST_DIR}/../custom_components/*")
set(PRIV_REQUIRES "")

foreach(component_dir ${COMPONENT_DIRS})
    if(IS_DIRECTORY "${component_dir}")
        message(STATUS "Adding ${component_dir} as dependency")
        get_filename_component(component_name ${component_dir} NAME)
        list(APPEND PRIV_REQUIRES ${component_name})
    endif()
endforeach()

message(STATUS "PRIV_REQUIRES: ${PRIV_REQUIRES}")

idf_component_register(SRCS "."
                    INCLUDE_DIRS "."
                    PRIV_REQUIRES ${PRIV_REQUIRES})
```

Este script percorre o diretório custom_components e adiciona automaticamente todos os componentes encontrados em PRIV_REQUIRES, eliminando a necessidade de adicionar componentes manualmente a cada novo projeto.

3. Atualizando o CMakeLists.txt da Raiz

Além das alterações na pasta custom_applications, atualize o CMakeLists.txt da raiz do projeto para incluir os novos diretórios:

```Cmake
cmake_minimum_required(VERSION 3.16)
list(APPEND EXTRA_COMPONENT_DIRS "${CMAKE_CURRENT_LIST_DIR}/custom_components")
list(APPEND EXTRA_COMPONENT_DIRS "${CMAKE_CURRENT_LIST_DIR}/custom_applications")
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(project_name)
```

Atenção: Ao alterar seu projeto, apague a pasta build antes de recompilar, caso já tenha feito alguma compilação anterior. As dependências PRIV_REQUIRES ou REQUIRES dos seus componentes não podem ter a palavra main. Substitua-a pelo novo nome, se necessário.

Conclusão

Estas modificações permitem uma maior flexibilidade e automação no processo de desenvolvimento com ESP-IDF. Com a adição dinâmica de componentes e a padronização dos diretórios, o processo de configuração e manutenção de projetos se torna mais eficiente. Experimente essas alterações e adapte-as conforme necessário para atender às necessidades específicas do seu projeto.

Referência

https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/build-system.html#rename-main

Bruno Lima

Engenheiro de computação atuando em desenvolvimento de sistemas embarcados (Firmware) com microcontroladores e processadores (Linux Embarcado). Contribuidor de projetos públicos e fóruns de c/c++. linkedin github

Postar um comentário

Deixe seu comentário ou sua sugestão!

Postagem Anterior Próxima Postagem

Formulário de contato