Merge pull request #30 from gcopoix/feature/x11_driver
Added Implementation using recently merged X11 driver.
This commit is contained in:
commit
2ac86e625e
23
.vscode/c_cpp_properties.json
vendored
23
.vscode/c_cpp_properties.json
vendored
@ -1,23 +0,0 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Linux",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"defines": [],
|
||||
"intelliSenseMode": "gcc-x64",
|
||||
"browse": {
|
||||
"path": [
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"limitSymbolsToIncludedHeaders": true,
|
||||
"databaseFilename": ""
|
||||
},
|
||||
"compilerPath": "/usr/bin/gcc",
|
||||
"cStandard": "c11",
|
||||
"cppStandard": "c++17"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
3
.vscode/extensions.json
vendored
3
.vscode/extensions.json
vendored
@ -1,3 +0,0 @@
|
||||
{
|
||||
"recommendations": ["ms-vscode.cpptools"]
|
||||
}
|
||||
25
.vscode/launch.json
vendored
25
.vscode/launch.json
vendored
@ -1,25 +0,0 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "g++ build and debug active file",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/build/bin/demo",
|
||||
"args": [],
|
||||
"stopAtEntry": false,
|
||||
"cwd": "${workspaceFolder}",
|
||||
"environment": [],
|
||||
"externalConsole": false,
|
||||
"MIMode": "gdb",
|
||||
"setupCommands": [
|
||||
{
|
||||
"description": "Enable pretty-printing for gdb",
|
||||
"text": "-enable-pretty-printing",
|
||||
"ignoreFailures": true
|
||||
}
|
||||
],
|
||||
"preLaunchTask": "Build"
|
||||
}
|
||||
]
|
||||
}
|
||||
38
.vscode/tasks.json
vendored
38
.vscode/tasks.json
vendored
@ -1,38 +0,0 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"type": "shell",
|
||||
"label": "Build",
|
||||
"command": "make",
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "shared"
|
||||
},
|
||||
"problemMatcher": {
|
||||
"owner": "cpp",
|
||||
"fileLocation": [
|
||||
"relative",
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"pattern": {
|
||||
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 5
|
||||
}
|
||||
},
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
26
Makefile
26
Makefile
@ -3,7 +3,12 @@
|
||||
# WARNING: relies on invocation setting current working directory to Makefile location
|
||||
# This is done in .vscode/task.json
|
||||
#
|
||||
PROJECT ?= lvgl-sdl
|
||||
|
||||
# select underlaying LCGL display driver (SDL2 || X11)
|
||||
LV_DRIVER := X11
|
||||
#LV_DRIVER := SDL2
|
||||
|
||||
PROJECT ?= lvgl-demo
|
||||
MAKEFLAGS := -j $(shell nproc)
|
||||
SRC_EXT := c
|
||||
OBJ_EXT := o
|
||||
@ -25,12 +30,19 @@ WARNINGS := -Wall -Wextra \
|
||||
|
||||
CFLAGS := -O0 -g $(WARNINGS)
|
||||
|
||||
# Add simulator define to allow modification of source
|
||||
DEFINES := -D SIMULATOR=1 -D LV_BUILD_TEST=0
|
||||
# simulator library define
|
||||
ifeq "$(LV_DRIVER)" "SDL2"
|
||||
LV_DRIVER_USE := USE_SDL
|
||||
else
|
||||
LV_DRIVER_USE := USE_$(LV_DRIVER)
|
||||
endif
|
||||
|
||||
# Add simulator defines to allow modification of source
|
||||
DEFINES := -D SIMULATOR=1 -D LV_BUILD_TEST=0 -D $(LV_DRIVER_USE)
|
||||
|
||||
# Include simulator inc folder first so lv_conf.h from custom UI can be used instead
|
||||
INC := -I./ui/simulator/inc/ -I./ -I./lvgl/ #-I/usr/include/freetype2 -L/usr/local/lib
|
||||
LDLIBS := -lSDL2 -lm #-lfreetype -lavformat -lavcodec -lavutil -lswscale -lm -lz -lpthread
|
||||
LDLIBS := -l$(LV_DRIVER) -lpthread -lm #-lfreetype -lavformat -lavcodec -lavutil -lswscale -lm -lz
|
||||
BIN := $(BIN_DIR)/demo
|
||||
|
||||
COMPILE = $(CC) $(CFLAGS) $(INC) $(DEFINES)
|
||||
@ -39,14 +51,14 @@ COMPILE = $(CC) $(CFLAGS) $(INC) $(DEFINES)
|
||||
SRCS := $(shell find $(SRC_DIR) -type f -name '*.c' -not -path '*/\.*')
|
||||
OBJECTS := $(patsubst $(SRC_DIR)%,$(BUILD_DIR)/%,$(SRCS:.$(SRC_EXT)=.$(OBJ_EXT)))
|
||||
|
||||
all: default
|
||||
all: $(BIN)
|
||||
|
||||
$(BUILD_DIR)/%.$(OBJ_EXT): $(SRC_DIR)/%.$(SRC_EXT)
|
||||
$(BUILD_DIR)/%.$(OBJ_EXT): $(SRC_DIR)/%.$(SRC_EXT) lv_demo_conf.h lv_conf.h Makefile
|
||||
@echo 'Building project file: $<'
|
||||
@mkdir -p $(dir $@)
|
||||
@$(COMPILE) -c -o "$@" "$<"
|
||||
|
||||
default: $(OBJECTS)
|
||||
$(BIN): $(OBJECTS)
|
||||
@mkdir -p $(BIN_DIR)
|
||||
$(CC) -o $(BIN) $(OBJECTS) $(LDFLAGS) ${LDLIBS}
|
||||
|
||||
|
||||
27
README.md
27
README.md
@ -9,11 +9,12 @@ Using a PC simulator instead of an embedded hardware has several advantages:
|
||||
* **Developer friendly** because much easier and faster to debug on PC
|
||||
|
||||
## Requirements
|
||||
This project is configured for VSCode and only tested on Linux, although this may work on OSx or WSL. It requires a working version of GCC, GDB and make in your path.
|
||||
This project is configured for [VSCode](https://code.visualstudio.com) and only tested on Linux, although this may work on OSx or WSL. It requires a working version of GCC, GDB and make in your path.
|
||||
|
||||
To allow debugging inside VSCode you will also require a GDB [extension](https://marketplace.visualstudio.com/items?itemName=webfreak.debug) or other suitable debugger.
|
||||
To allow debugging inside VSCode you will also require a GDB [extension](https://marketplace.visualstudio.com/items?itemName=webfreak.debug) or other suitable debugger. All the requirements have been pre-configured in the [.workspace](simulator.code-workspace) file (simply open the project by doubleclick on this file).
|
||||
|
||||
* **SDL** a low level driver library to use graphics, handle mouse, keyboard etc.
|
||||
The project can use **SDL** or **X11** as LVGL display driver for lowlevel graphics/mouse/keyboard support. This can be defined in the [Makefile](Makefile#L8).
|
||||
Please make sure the selected library is installed in the system (check [Install graphics driver](#install-graphics-driver)).
|
||||
|
||||
## Usage
|
||||
|
||||
@ -25,7 +26,11 @@ Clone the PC project and the related sub modules:
|
||||
git clone --recursive https://github.com/lvgl/lv_port_pc_vscode
|
||||
```
|
||||
|
||||
### Install SDL
|
||||
### Install graphics driver
|
||||
The project can use **SDL** or **X11** as LVGL display driver. This can be selected in the [Makefile](Makefile#L8).
|
||||
Please make sure the used library is installed in the system:
|
||||
|
||||
#### Install SDL
|
||||
You can download SDL from https://www.libsdl.org/
|
||||
|
||||
On on Linux you can install it via terminal:
|
||||
@ -33,6 +38,12 @@ On on Linux you can install it via terminal:
|
||||
sudo apt-get update && sudo apt-get install -y build-essential libsdl2-dev
|
||||
```
|
||||
|
||||
#### Install X11
|
||||
On on Linux you can install it via terminal:
|
||||
```bash
|
||||
sudo apt-get update && sudo apt-get install -y libx11-dev
|
||||
```
|
||||
|
||||
### Optional library
|
||||
There are also FreeType and FFmpeg support. You can install FreeType support with:
|
||||
```bash
|
||||
@ -55,11 +66,17 @@ make
|
||||
sudo make install
|
||||
```
|
||||
|
||||
And then remove all the comments in the `Makefile` on `INC` and `LDLIBS` lines. They should be:
|
||||
And then remove all the comments in the `Makefile` on `INC` and `LDLIBS` lines. \
|
||||
They should be for **SDL**:
|
||||
```Makefile
|
||||
INC := -I./ui/simulator/inc/ -I./ -I./lvgl/ -I/usr/include/freetype2 -L/usr/local/lib
|
||||
LDLIBS := -lSDL2 -lm -lfreetype -lavformat -lavcodec -lavutil -lswscale -lm -lz -lpthread
|
||||
```
|
||||
They should be for **X11**:
|
||||
```Makefile
|
||||
INC := -I./ui/simulator/inc/ -I./ -I./lvgl/ -I/usr/include/freetype2 -L/usr/local/lib
|
||||
LDLIBS := -lX11 -lm -lfreetype -lavformat -lavcodec -lavutil -lswscale -lm -lz -lpthread
|
||||
```
|
||||
|
||||
### Setup
|
||||
To allow custom UI code an `lv_conf.h` file placed at `ui/simulator/inc` will automatically override this projects lv_conf.h file. By default code under `ui` is ignored so you can reuse this repository for multiple projects. You will need to place a call from `main.c` to your UI's entry function.
|
||||
|
||||
@ -12,6 +12,11 @@
|
||||
#ifndef LV_EX_CONF_H
|
||||
#define LV_EX_CONF_H
|
||||
|
||||
/*====================
|
||||
SIMULATION SETTINGS
|
||||
*====================*/
|
||||
#define DISP_HOR_RES 800
|
||||
#define DISP_VER_RES 600
|
||||
|
||||
/*******************
|
||||
* GENERAL SETTING
|
||||
@ -53,4 +58,3 @@
|
||||
#endif /*LV_EX_CONF_H*/
|
||||
|
||||
#endif /*End of "Content enable"*/
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 8cdabe8d42bf798d5a31e75cbd5a2cd816c29e5c
|
||||
Subproject commit 5a5b4a1a3e95a46e6cf58ac6aac6ed6e826bfedd
|
||||
@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file lv_drv_conf.h
|
||||
* Configuration file for v8.3.0
|
||||
* Configuration file for v9.0.0-dev
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -86,7 +86,7 @@
|
||||
|
||||
/* SDL based drivers for display, mouse, mousewheel and keyboard*/
|
||||
#ifndef USE_SDL
|
||||
# define USE_SDL 1
|
||||
# define USE_SDL 0
|
||||
#endif
|
||||
|
||||
/* Hardware accelerated SDL driver */
|
||||
@ -113,6 +113,9 @@
|
||||
|
||||
/*Open two windows to test multi display support*/
|
||||
# define SDL_DUAL_DISPLAY 0
|
||||
|
||||
/* Window Title */
|
||||
# define SDL_WINDOW_TITLE "TFT Simulator"
|
||||
#endif
|
||||
|
||||
/*-------------------
|
||||
@ -195,6 +198,23 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*----------------------------------------
|
||||
* X11 drivers (monitor, mouse, keyboard)
|
||||
*---------------------------------------*/
|
||||
#ifndef USE_X11
|
||||
# define USE_X11 0
|
||||
#endif
|
||||
|
||||
#if USE_X11
|
||||
/* Simulated screen resolution */
|
||||
#ifndef DISP_HOR_RES
|
||||
#define DISP_HOR_RES 480
|
||||
#endif
|
||||
#ifndef DISP_VER_RES
|
||||
#define DISP_VER_RES 320
|
||||
#endif
|
||||
#endif // USE_X11
|
||||
|
||||
/*----------------
|
||||
* SSD1963
|
||||
*--------------*/
|
||||
@ -324,7 +344,6 @@
|
||||
|
||||
#if USE_FBDEV
|
||||
# define FBDEV_PATH "/dev/fb0"
|
||||
# define FBDEV_DISPLAY_POWER_ON 1 /* 1 to force display power during initialization */
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------
|
||||
@ -336,7 +355,6 @@
|
||||
|
||||
#if USE_BSD_FBDEV
|
||||
# define FBDEV_PATH "/dev/fb0"
|
||||
# define FBDEV_DISPLAY_POWER_ON 1 /* 1 to force display power during initialization */
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------
|
||||
|
||||
2
lvgl
2
lvgl
@ -1 +1 @@
|
||||
Subproject commit fd21ed0eb82bacb1e482180ab0aaed6a667f000d
|
||||
Subproject commit 2791d5739fc00cb3802419c0fed73140910b5da7
|
||||
131
main/src/main.c
131
main/src/main.c
@ -10,12 +10,18 @@
|
||||
#define _DEFAULT_SOURCE /* needed for usleep() */
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#define SDL_MAIN_HANDLED /*To fix SDL's "undefined reference to WinMain" issue*/
|
||||
#include <SDL2/SDL.h>
|
||||
#include <pthread.h>
|
||||
#include "lv_drv_conf.h"
|
||||
#include "lvgl/lvgl.h"
|
||||
#include "lvgl/examples/lv_examples.h"
|
||||
#include "lvgl/demos/lv_demos.h"
|
||||
#if USE_SDL
|
||||
#define SDL_MAIN_HANDLED /*To fix SDL's "undefined reference to WinMain" issue*/
|
||||
#include <SDL2/SDL.h>
|
||||
#include "lv_drivers/sdl/sdl.h"
|
||||
#elif USE_X11
|
||||
#include "lv_drivers/x11/x11.h"
|
||||
#endif
|
||||
// #include "lv_drivers/display/monitor.h"
|
||||
// #include "lv_drivers/indev/mouse.h"
|
||||
// #include "lv_drivers/indev/keyboard.h"
|
||||
@ -33,11 +39,14 @@
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
static void hal_init(void);
|
||||
static int tick_thread(void *data);
|
||||
static void hal_deinit(void);
|
||||
static void* tick_thread(void *data);
|
||||
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
static pthread_t thr_tick; /* thread */
|
||||
static bool end_tick = false; /* flag to terminate thread */
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
@ -197,6 +206,7 @@ int main(int argc, char **argv)
|
||||
usleep(5 * 1000);
|
||||
}
|
||||
|
||||
hal_deinit();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -210,12 +220,29 @@ int main(int argc, char **argv)
|
||||
*/
|
||||
static void hal_init(void)
|
||||
{
|
||||
/* mouse input device */
|
||||
static lv_indev_drv_t indev_drv_1;
|
||||
lv_indev_drv_init(&indev_drv_1);
|
||||
indev_drv_1.type = LV_INDEV_TYPE_POINTER;
|
||||
|
||||
/* keyboard input device */
|
||||
static lv_indev_drv_t indev_drv_2;
|
||||
lv_indev_drv_init(&indev_drv_2);
|
||||
indev_drv_2.type = LV_INDEV_TYPE_KEYPAD;
|
||||
|
||||
/* mouse scroll wheel input device */
|
||||
static lv_indev_drv_t indev_drv_3;
|
||||
lv_indev_drv_init(&indev_drv_3);
|
||||
indev_drv_3.type = LV_INDEV_TYPE_ENCODER;
|
||||
|
||||
lv_group_t *g = lv_group_create();
|
||||
lv_group_set_default(g);
|
||||
|
||||
lv_disp_t *disp = NULL;
|
||||
|
||||
#if USE_SDL
|
||||
/* Use the 'monitor' driver which creates window on PC's monitor to simulate a display*/
|
||||
sdl_init();
|
||||
/* Tick init.
|
||||
* You have to call 'lv_tick_inc()' in periodically to inform LittelvGL about
|
||||
* how much time were elapsed Create an SDL thread to do this*/
|
||||
SDL_CreateThread(tick_thread, "tick", NULL);
|
||||
|
||||
/*Create a display buffer*/
|
||||
static lv_disp_draw_buf_t disp_buf1;
|
||||
@ -232,39 +259,56 @@ static void hal_init(void)
|
||||
disp_drv.ver_res = MONITOR_VER_RES;
|
||||
disp_drv.antialiasing = 1;
|
||||
|
||||
lv_disp_t * disp = lv_disp_drv_register(&disp_drv);
|
||||
disp = lv_disp_drv_register(&disp_drv);
|
||||
|
||||
/* Add the input device driver */
|
||||
// mouse_init();
|
||||
indev_drv_1.read_cb = sdl_mouse_read;
|
||||
|
||||
// keyboard_init();
|
||||
indev_drv_2.read_cb = sdl_keyboard_read;
|
||||
|
||||
// mousewheel_init();
|
||||
indev_drv_3.read_cb = sdl_mousewheel_read;
|
||||
|
||||
#elif USE_X11
|
||||
lv_x11_init("LVGL Simulator Demo", DISP_HOR_RES, DISP_VER_RES);
|
||||
|
||||
/*Create a display buffer*/
|
||||
static lv_disp_draw_buf_t disp_buf1;
|
||||
static lv_color_t buf1_1[DISP_HOR_RES * 100];
|
||||
static lv_color_t buf1_2[DISP_HOR_RES * 100];
|
||||
lv_disp_draw_buf_init(&disp_buf1, buf1_1, buf1_2, DISP_HOR_RES * 100);
|
||||
|
||||
/*Create a display*/
|
||||
static lv_disp_drv_t disp_drv;
|
||||
lv_disp_drv_init(&disp_drv);
|
||||
disp_drv.draw_buf = &disp_buf1;
|
||||
disp_drv.flush_cb = lv_x11_flush;
|
||||
disp_drv.hor_res = DISP_HOR_RES;
|
||||
disp_drv.ver_res = DISP_VER_RES;
|
||||
disp_drv.antialiasing = 1;
|
||||
|
||||
disp = lv_disp_drv_register(&disp_drv);
|
||||
|
||||
/* Add the input device driver */
|
||||
indev_drv_1.read_cb = lv_x11_get_pointer;
|
||||
indev_drv_2.read_cb = lv_x11_get_keyboard;
|
||||
indev_drv_3.read_cb = lv_x11_get_mousewheel;
|
||||
#endif
|
||||
/* Set diplay theme */
|
||||
lv_theme_t * th = lv_theme_default_init(disp, lv_palette_main(LV_PALETTE_BLUE), lv_palette_main(LV_PALETTE_RED), LV_THEME_DEFAULT_DARK, LV_FONT_DEFAULT);
|
||||
lv_disp_set_theme(disp, th);
|
||||
|
||||
lv_group_t * g = lv_group_create();
|
||||
lv_group_set_default(g);
|
||||
/* Tick init */
|
||||
end_tick = false;
|
||||
pthread_create(&thr_tick, NULL, tick_thread, NULL);
|
||||
|
||||
/* Add the mouse as input device
|
||||
* Use the 'mouse' driver which reads the PC's mouse*/
|
||||
// mouse_init();
|
||||
static lv_indev_drv_t indev_drv_1;
|
||||
lv_indev_drv_init(&indev_drv_1); /*Basic initialization*/
|
||||
indev_drv_1.type = LV_INDEV_TYPE_POINTER;
|
||||
|
||||
/*This function will be called periodically (by the library) to get the mouse position and state*/
|
||||
indev_drv_1.read_cb = sdl_mouse_read;
|
||||
/* register input devices */
|
||||
lv_indev_t *mouse_indev = lv_indev_drv_register(&indev_drv_1);
|
||||
|
||||
// keyboard_init();
|
||||
static lv_indev_drv_t indev_drv_2;
|
||||
lv_indev_drv_init(&indev_drv_2); /*Basic initialization*/
|
||||
indev_drv_2.type = LV_INDEV_TYPE_KEYPAD;
|
||||
indev_drv_2.read_cb = sdl_keyboard_read;
|
||||
lv_indev_t *kb_indev = lv_indev_drv_register(&indev_drv_2);
|
||||
lv_indev_set_group(kb_indev, g);
|
||||
// mousewheel_init();
|
||||
static lv_indev_drv_t indev_drv_3;
|
||||
lv_indev_drv_init(&indev_drv_3); /*Basic initialization*/
|
||||
indev_drv_3.type = LV_INDEV_TYPE_ENCODER;
|
||||
indev_drv_3.read_cb = sdl_mousewheel_read;
|
||||
|
||||
lv_indev_t *enc_indev = lv_indev_drv_register(&indev_drv_3);
|
||||
lv_indev_set_group(kb_indev, g);
|
||||
lv_indev_set_group(enc_indev, g);
|
||||
|
||||
/* Set a cursor for the mouse */
|
||||
@ -274,18 +318,33 @@ static void hal_init(void)
|
||||
lv_indev_set_cursor(mouse_indev, cursor_obj); /*Connect the image object to the driver*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Releases the Hardware Abstraction Layer (HAL) for the LVGL graphics library
|
||||
*/
|
||||
static void hal_deinit(void)
|
||||
{
|
||||
end_tick = true;
|
||||
pthread_join(thr_tick, NULL);
|
||||
|
||||
#if USE_SDL
|
||||
// nop
|
||||
#elif USE_X11
|
||||
lv_x11_deinit();
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* A task to measure the elapsed time for LVGL
|
||||
* @param data unused
|
||||
* @return never return
|
||||
*/
|
||||
static int tick_thread(void *data) {
|
||||
static void* tick_thread(void *data) {
|
||||
(void)data;
|
||||
|
||||
while(1) {
|
||||
SDL_Delay(5);
|
||||
while(!end_tick) {
|
||||
usleep(5000);
|
||||
lv_tick_inc(5); /*Tell LittelvGL that 5 milliseconds were elapsed*/
|
||||
}
|
||||
|
||||
return 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -1,18 +1,75 @@
|
||||
{
|
||||
// https://code.visualstudio.com/docs/editor/workspaces
|
||||
// https://code.visualstudio.com/docs/editor/multi-root-workspaces
|
||||
// https://code.visualstudio.com/docs/editor/variables-reference
|
||||
|
||||
"folders": [
|
||||
{
|
||||
"path": "./"
|
||||
}
|
||||
"path": "."
|
||||
},
|
||||
],
|
||||
// extensions.json section
|
||||
"extensions": {
|
||||
"recommendations": [
|
||||
"ms-vscode.cpptools", // common C/C++ support
|
||||
"ms-vscode.cpptools-themes", // general C/C++ theme
|
||||
],
|
||||
"unwantedRecommendations": [
|
||||
]
|
||||
},
|
||||
// settings.json section
|
||||
"settings": {
|
||||
"files.trimTrailingWhitespace": true,
|
||||
"files.insertFinalNewline": true,
|
||||
"files.trimFinalNewlines": true,
|
||||
"cmake.configureOnOpen": false,
|
||||
"files.associations": {
|
||||
"cstdio": "cpp",
|
||||
"cstdarg": "cpp"
|
||||
"lv_demos.h": "c",
|
||||
"lvgl.h": "c",
|
||||
"lv_drv_conf.h": "c",
|
||||
"stdlib.h": "c"
|
||||
},
|
||||
"search.exclude": {
|
||||
"**/.*": true,
|
||||
"build": true
|
||||
},
|
||||
"search.useIgnoreFiles": false
|
||||
// tasks.json section
|
||||
"tasks": {
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Build",
|
||||
"command": "make",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"problemMatcher": {
|
||||
"owner": "cpp",
|
||||
"fileLocation": ["relative", "${workspaceFolder}"],
|
||||
"pattern": {
|
||||
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"column": 3,
|
||||
"severity": 4,
|
||||
"message": 5
|
||||
}
|
||||
}
|
||||
},
|
||||
],
|
||||
},
|
||||
// launch.json section
|
||||
"launch": {
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug LVGL demo with gdb",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/build/bin/demo",
|
||||
"args": [],
|
||||
"cwd": "${fileDirname}",
|
||||
"preLaunchTask": "Build",
|
||||
"stopAtEntry": false,
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user