LovyanGFX icon indicating copy to clipboard operation
LovyanGFX copied to clipboard

build error with cross-compiler when using SDL2

Open nnn112358 opened this issue 9 months ago • 4 comments

Environment ( 実行環境 )

  • MCU or Board name: CoreMP135
  • Panel Driver IC: other
  • Bus type: other
  • LovyanGFX version: latest develop
  • FrameWork version: other
  • Build Environment: gcc-arm-linux-gnueabihf
  • Operating System: Ubuntu-2204

Problem Description ( 問題の内容 )

CoreMP135のフレームバッファ機能を使ってLCDで絵を描画するコードにて、Linuxでクロスコンパイラ(gcc-arm-linux-gnueabihf)を使ってCoreMP135のバイナリのビルドを行う場合に、libsdl2-devがインストールされている環境ではmake時にエラー発生する。

詳細;https://github.com/nnn112358/CoreMP135_LovyanGFX_test

Expected Behavior ( 期待される動作 )

フレームバッファ機能を使ってLCDを描画するコードをビルドする場合に、SDLライブラリのファイルを参照しないこと。

Steps to reproduce ( 再現のための前提条件 )

$ sudo apt install gcc-arm-linux-gnueabihf
$ git clone https://github.com/nnn112358/CoreMP135_LovyanGFX_test
$ cd CoreMP135_LovyanGFX_test
$ git clone https://github.com/lovyan03/LovyanGFX.git
$ sudo apt install libsdl2-dev
$ cd CoreMP135_LovyanGFX_test
$ mkdir build
$ cmake ..
$ make
$ make
[ 95%] Building CXX object CMakeFiles/coremp135_LovyanGFX.dir/coremp135_touchpanel.cpp.o
In file included from /usr/include/SDL2/SDL_stdinc.h:31,
                 from /usr/include/SDL2/SDL_main.h:25,
                 from /opt/LinuxHome/CoreMP135/CoreMP135_LovyanGFX_test/LovyanGFX/src/lgfx/v1/platforms/sdl/common.hpp:32,
                 from /opt/LinuxHome/CoreMP135/CoreMP135_LovyanGFX_test/LovyanGFX/src/lgfx/v1/platforms/sdl/Panel_sdl.hpp:23,
                 from /opt/LinuxHome/CoreMP135/CoreMP135_LovyanGFX_test/LovyanGFX/src/lgfx/v1/platforms/device.hpp:94,
                 from /opt/LinuxHome/CoreMP135/CoreMP135_LovyanGFX_test/LovyanGFX/src/lgfx/v1_init.hpp:22,
                 from /opt/LinuxHome/CoreMP135/CoreMP135_LovyanGFX_test/LovyanGFX/src/LovyanGFX.hpp:31,
                 from /opt/LinuxHome/CoreMP135/CoreMP135_LovyanGFX_test/coremp135_touchpanel.cpp:4:
/usr/include/SDL2/SDL_config.h:4:10: fatal error: SDL2/_real_SDL_config.h: No such file or directory
    4 | #include <SDL2/_real_SDL_config.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/coremp135_LovyanGFX.dir/build.make:370: CMakeFiles/coremp135_LovyanGFX.dir/coremp135_touchpanel.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/coremp135_LovyanGFX.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

Code to reproduce this issue ( 再現させるためのコード )

詳細;https://github.com/nnn112358/CoreMP135_LovyanGFX_test

nnn112358 avatar May 20 '24 01:05 nnn112358

ご連絡ありがとうございます!

確認なのですが、これは『Linux環境かつSDLのヘッダが存在する状況において、SDLは要らないのでFrameBufferを使わせて欲しい』 という認識で合っていますでしょうか?

lovyan03 avatar May 20 '24 02:05 lovyan03

はい、そうです。 Linux環境かつSDLのヘッダが存在する状況において、SDLは要らないのでFrameBufferを使わせて欲しい、です。

nnn112358 avatar May 20 '24 02:05 nnn112358

なるほど、理解しました。 そうしますと…LinuxかつSDLが使いたい場合との使い分けをどうするか考慮しておく必要がありますね。 例えばLGFX側で 『コンパイルオプションに -DLGFX_DISABLE_SDL を付けるとSDLを使わない動作になる』 という対策を追加する、という案ではご要望にかないますでしょうか?

lovyan03 avatar May 20 '24 02:05 lovyan03

『コンパイルオプションに -DLGFX_DISABLE_SDL を付けるとSDLを使わない動作になる』

これで、期待される動作には十分だと思います。

nnn112358 avatar May 20 '24 02:05 nnn112358