78 lines
1.8 KiB
Markdown
78 lines
1.8 KiB
Markdown
# 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
|
|
```
|