Compare commits

..

2 Commits

6 changed files with 154 additions and 9 deletions

34
ESP32_Project/README.md Normal file
View File

@ -0,0 +1,34 @@
# ESP32_Project
## Description
This is a template for **C** project for esp32 boards using PlatformIO with the esp-idf framework, better than Arduino but proprietary.
## Setup
To make this template work you will need to install PlatformIO.
For this use this link : [super quick install](https://docs.platformio.org/en/latest/core/installation/methods/installer-script.html#super-quick-macos-linux)
During installation select all boards.
Then in the project's platformio.ini change the board id to the one that you can find by using :
```bash
pio boards your_board
```
And finally in the project dir run :
```bash
pio project init
```
## Usage
In vscode open your task runner and use the different tasks :
- **Build** : Build the current project
- **Build and Upload** : Build project and upload to device
- **Clean** : Clean build directory
They correspond to calling make with the following :
- **Build** : pio run
- **Build and Upload** : pio run --target upload
- **Clean** : pio run --target clean

View File

@ -0,0 +1,10 @@
{
"configurations": [
{
"name": "Default",
"includePath": [
]
}
],
"version": 1
}

View File

@ -6,9 +6,9 @@
"detail": "Build project",
"type": "shell",
"command": "make",
//"args": [
// "-j$(nproc)"
//],
"args": [
"-j$(nproc)"
],
"group": "build",
"presentation": {
"echo": true,

View File

@ -9,11 +9,13 @@ SOURCES := \
OUTPUT := GCC_Project
# Compiler and flags
CXX = ccache gcc
CXXFLAGS = -Wall -Wextra -std=c17 -g
INCLUDE_DIRS =
CC = gcc
CCFLAGS = -Wall -Wextra -std=c17
LDFLAGS =
# Include directories
INCLUDE_DIRS =
# Change output location
OUTPUT := $(BUILD_DIR)/$(OUTPUT)
@ -45,14 +47,14 @@ build_dir:
# Link target
$(OUTPUT): $(OBJECTS)
@echo "[100%] $(YELLOW)Linking $(OUTPUT)$(RESET)"
$(Q)$(CXX) $(LDFLAGS) -o $@ $(OBJECTS)
$(Q)$(CC) $(LDFLAGS) -o $@ $(OBJECTS)
# Build .o files from .c
$(BUILD_DIR)/%.o: %.c
$(eval CURRENT_FILE := $(shell echo $$(($(CURRENT_FILE)+1))))
$(eval PERCENTAGE := $(shell echo $$(($(CURRENT_FILE)*100/$(TOTAL_FILES)))))
@echo "[$(PERCENTAGE)%] $(GREEN)Building C object $@$(RESET)"
$(Q)$(CXX) $(CXXFLAGS) $(INCLUDE_DIRS:%=-I%) -MMD -MP -c $< -o $@
$(Q)$(CC) $(CCFLAGS) $(INCLUDE_DIRS:%=-I%) -MMD -MP -c $< -o $@
# Source files dependencies
-include $(OBJECTS:.o=.d)
@ -68,7 +70,6 @@ end: $(OUTPUT)
.PHONY: clean
clean:
$(Q)rm -rf $(BUILD_DIR)
$(Q)rm -rf $(dir $(FXCONV_CONVERTERS))/__pycache__
# Run executable
.PHONY: run

77
GCC_Project/README.md Normal file
View File

@ -0,0 +1,77 @@
# GCC_Project
## Description
This is a template for **C** projects using make and gcc.
## Setup
To make this template work you will need to install make and gcc.
On Debian 13 the command is :
```bash
sudo apt install make gcc
```
## Usage
In vscode open your task runner and use the different tasks :
- **Build** : Build the current project
- **Clean** : Clean build directory
- **Run** : Run the compiled executable
- **Build Verbose** : Build with verbosity on (show the commands called by make while building the project)
They correspond to calling make with the following :
- **Build** : make
- **Clean** : make clean
- **Run** : make run
- **Verbosity on** : make ... VERBOSE=1 ; You can add verbosity to any task that you want
If you want to add more source files in your project, add their path in the SOURCES variable in the Makefile.
For exemple to add src/wifi/udp_client.c you should do something like this :
```bash
# Source files
SOURCES := \
src/main.c \
src/wifi/udp_client.c
```
You can also add include drectories for headers :
TIP : Add the same path to your c_cpp_properties.json in the .vscode folder in the includePath list, like this you don't have include errors by IntelliSense
```bash
# Include directories
INCLUDE_DIRS = lib/super_extra/include/
```
> .vscode/c_cpp_properties.json
```json
{
"configurations": [
{
"name": "Default",
"includePath": [
"lib/super_extra/include/"
]
}
],
"version": 1
}
```
You can change the name of the executable and the build dir too (don't forget to change it in the .gitignore):
```bash
# Build folder
BUILD_DIR = build_dir
#...
# Output target name
OUTPUT := BestExecOfHumanity
```
And change the compiler and linker args as you want :
```bash
# Flags
CCFLAGS = -Wall -Wextra -std=c17 -g -no-pie
LDFLAGS = -no-pie
```

23
README.md Normal file
View File

@ -0,0 +1,23 @@
# Projects Templates
## Description
This is a compilation of many differents project templates, mainly configured for vscode.
Every template has a default program so you can start by there after configuring them.
-----------------------------------------------------------------------------------------
## Setup
### Per-project setup
Each project template has a README to explain how to configure it on Debian 13 and how to use it.
Other distributions than Debian should work but configuration might not be applicable.
### Global setup
Many of the templates - if not all - are using the task runner in vscode, so it's highly recommended to setup a shortcut to open the task runner.
You may also want to install the extensions in vscode.
For the moment you should install, at least, the **C/C++** default extension (not the extension pack) by *microsoft* to get IntelliSense highlighting and code browsing.
I use the **Teleplot** extension by *alexnesnes* too. It's useful to communicate over serial port to external devices like RPI Pico or ESP32 boards.