tsoding / ded

Dramatic EDitor
MIT License
579 stars 76 forks source link

Issue building on Windows. #41

Open SatoTsukasaCode opened 1 year ago

SatoTsukasaCode commented 1 year ago

I tried to install on windows and got this message.


C:\Users\Chip\Desktop\ded>.\build_msvc.bat
'cl.exe' is not recognized as an internal or external command,
operable program or batch file.```
Eshanatnight commented 1 year ago

The Visual Studio Compiler is only available on the Developer Powershell or Developer Command Prompt. You can run the bat file on the Developer Powershell or Developer Command Prompt and it will recognize cl.exe.

Side Note I am not exactly sure if you can build ded natively on Windows. Last I heard there was an issue with the Dependency Libraries. So I would kinda suggest that you use wsl/wslg if you wast to build/test it out

SatoTsukasaCode commented 1 year ago

i tried but before building on WSL but is didn't work.


chip@DESKTOP-CSK36ER:~/ded$ ./build.sh
+ CC=cc
+ PKGS=sdl2 glew freetype2
+ CFLAGS=-Wall -Wextra -std=c11 -pedantic -ggdb
+ LIBS=-lm
+ SRC=src/main.c src/la.c src/editor.c src/sdl_extra.c src/file.c src/gl_extra.c src/free_glyph.c src/cursor_renderer.c src/uniforms.c
+ uname
+ [ Linux = Darwin ]
+ pkg-config --cflags sdl2 glew freetype2
./build.sh: 1: pkg-config: not found
+ pkg-config --libs sdl2 glew freetype2
./build.sh: 1: pkg-config: not found
+ cc -Wall -Wextra -std=c11 -pedantic -ggdb -o ded src/main.c src/la.c src/editor.c src/sdl_extra.c src/file.c src/gl_extra.c src/free_glyph.c src/cursor_renderer.c src/uniforms.c -lm
./build.sh: 15: cc: not found```
IRooc commented 1 year ago

Hi I got it building but not yet running, I didnt have freetype yet so I added an extra dependencies: Add this to the setup-dependencies.bat at the end if you don't have freetype

git clone https://github.com/ubawurinna/freetype-windows-binaries.git dependencies/freetype2

and my build_msvc.bat is this (next to freetype I added some new build files and disabled extra warnings)

@echo off
rem launch this from msvc-enabled console

set CFLAGS=/W4 /WX /std:c11 /wd4996 /wd5105 /wd4459 /wd4267 /wd4244 /FC /TC /Zi /nologo
set INCLUDES=/I dependencies\SDL2\include /I dependencies\GLFW\include /I dependencies\GLEW\include /I dependencies\freetype2\include
set LIBS=dependencies\SDL2\lib\x64\SDL2.lib ^
         dependencies\SDL2\lib\x64\SDL2main.lib ^
         dependencies\GLFW\lib\glfw3.lib ^
         dependencies\GLEW\lib\glew32s.lib ^
         "dependencies\freetype2\release dll\win64\freetype.lib" ^
         opengl32.lib User32.lib Gdi32.lib Shell32.lib

cl.exe %CFLAGS% %INCLUDES% /Feded src\main.c src\la.c src\editor.c src\sdl_extra.c src\file.c src\gl_extra.c src\free_glyph.c src\simple_renderer.c src/uniforms.c /link %LIBS% -SUBSYSTEM:console

I also copied the freetype.dll and SDL2.dll to the project root folder to run ded.exe

But now when I run there is some garbage after the second shaderload which I cannot yet explain. But babysteps Hope this helps for you

IRooc commented 1 year ago

For me this PR is working on windows https://github.com/tsoding/ded/pull/42

Meteoroetem commented 1 year ago

Hi, I also tried to build on windows, I added the freetype library and mentioned it in the build_msvc.bat like you suggested. I still got some errors. Does anyone know how to fix it?

This is the message I got:

main.c
C:\Users\rotem\Desktop\Programming\not mine\ded-master\src\main.c(258): error C2440: 'function': cannot convert from 'void (__cdecl *)(GLenum,GLenum,GLuint,GLenum,GLsizei,const GLchar *,const void *)' to 'GLDEBUGPROC'
C:\Users\rotem\Desktop\Programming\not mine\ded-master\src\main.c(258): warning C4024: '__glewDebugMessageCallback': different types for formal and actual parameter 1
la.c
editor.c
sdl_extra.c
C:\Users\rotem\Desktop\Programming\not mine\ded-master\src\sdl_extra.c(6): error C2220: the following warning is treated as an error
C:\Users\rotem\Desktop\Programming\not mine\ded-master\src\sdl_extra.c(6): warning C4013: 'fprintf' undefined; assuming extern returning int
C:\Users\rotem\Desktop\Programming\not mine\ded-master\src\sdl_extra.c(6): error C2065: 'stderr': undeclared identifier
C:\Users\rotem\Desktop\Programming\not mine\ded-master\src\sdl_extra.c(14): error C2065: 'stderr': undeclared identifier
file.c
gl_extra.c
free_glyph.c
simple_renderer.c
uniforms.c
Generating Code...

I think the problem is somehow related to the SDL2 library, Visual Studio hid the folder at first and I got error messages saying the library doesn't exist.

Thanks in advance!

(edit) I added

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

to the sdl_extra.h file and now I only get the conversion error.

IRooc commented 1 year ago

the sdl_extra.c in the PR has an extra include line of #include <stdio.h> to fix that part for the first error maybe it's a version difference? I ran the setup_dependencies.bat to get the versions the code expect.

BillKek commented 1 year ago

I don't recommend it, but you can use msys2 and mingw64 for build this app into native windows exe. Run mingw64.exe after msys2 installation. Add packaged into it: pacman -S git base-devel mingw-w64-x86_64-gcc mingw-w64-x86_64-glew mingw-w64-x86_64-mesa mingw-w64-x86_64-SDL2 mingw-w64-x86_64-pkgconf mingw-w64-x86_64-freetype Change dir by cd "path_copypasted_from_explorer_without_final_slash" Run script ./build_msys2_mingw64.sh from my https://github.com/BillKek/ded_old_msys2/blob/20230112/build_msys2_mingw64.sh (new) The resulting life.exe is 6 MB in size; or modify and run original ./build.sh.

IRooc commented 1 year ago

I'm keeping the pr https://github.com/tsoding/ded/pull/42 up to date with tsodings latest code, let me know if there are any other issue I might overlook.

jayhawker6 commented 1 year ago

got it working on windows (sort of cheating tho) using WSL. If you have issues compiling, try:

sudo apt install gcc
sudo apt install libfreetype-dev libfreetype6 libfreetype6-dev
sudo apt install libglew-dev

after that try ./build.sh and then if all goes well and you have the libraries and packages installed then you can simply ./ded (for Debian/ubuntu)

yahalloe commented 11 months ago

I tried installing the libraries libfreetype and libglew in WSL, but new unknown library i guess?

src/main.c:7:10: fatal error: SDL2/SDL.h: No such file or directory
    7 | #include <SDL2/SDL.h>
      |          ^~~~~~~~~~~~
compilation terminated.
In file included from src/./editor.h:6,
                 from src/editor.c:6:
src/./free_glyph.h:11:10: fatal error: SDL2/SDL_opengl.h: No such file or directory
   11 | #include <SDL2/SDL_opengl.h>
      |          ^~~~~~~~~~~~~~~~~~~
compilation terminated.
In file included from src/file_browser.h:5,
                 from src/file_browser.c:2:
src/free_glyph.h:11:10: fatal error: SDL2/SDL_opengl.h: No such file or directory
   11 | #include <SDL2/SDL_opengl.h>
      |          ^~~~~~~~~~~~~~~~~~~
compilation terminated.
In file included from src/free_glyph.c:3:
src/./free_glyph.h:11:10: fatal error: SDL2/SDL_opengl.h: No such file or directory
   11 | #include <SDL2/SDL_opengl.h>
      |          ^~~~~~~~~~~~~~~~~~~
compilation terminated.
In file included from src/simple_renderer.c:7:
src/./simple_renderer.h:10:10: fatal error: SDL2/SDL_opengl.h: No such file or directory
   10 | #include <SDL2/SDL_opengl.h>
IRooc commented 11 months ago

You probably need to add the SDL2 lib to the build include path, for windows it was this /I dependencies\SDL2\include but for wsl I don't know should be similar. Or maybe install the SDL2 version that is linked in the readme?

yahalloe commented 11 months ago

I downloaded the SDL2 via sudo apt at their website and the build ran without errors. Though upon running ./ded, 2 error popped up

error: XDG_RUNTIME_DIR not set in the environment.
ERROR: Could not initialize SDL: No available video device

was the SDL2 lib not good?