So, in the past week there have been two inquiries about running Filmulator on Windows.
It’s something I’m definitely interested in, I just don’t have the expertise needed for making it work with Windows and especially deployment. If anyone can provide help, that’d be great!
The other angle on it is to use Windows Subsystem for Linux. There’s some issues with it, such as an inability to create certain directories (?) and MingW returning success despite that? Or something.
But first of all, since WSL doesn’t currently support FUSE AppImages don’t work, so you need to run the AppImage with the --appimage-extract parameter to unzip the contents. Then, you need to cd into that directory, and set two environment variables: export APPDIR=[the folder where you extracted the AppImage], which tells the binary where to look for the QML UI files, and export QMLSCENE_DEVICE=softwarecontext to enable the software renderer, since WSL doesn’t support OpenGL either. This’ll be a huge drag on performance if you try to zoom or pan the image, but it’s necessary.
I haven’t really tested it myself, because I don’t have a Windows computer on hand, but if anyone can offer any experiences or suggestions, I’d really appreciate it.
I think @afre uses windows, offers super detailed feedback, and is willing to work through some issues; perhaps he can be of service. @Jacal and @McCap might also be willing to try some things out as well
Maybe also @sguyader and @gaaned92 if you need some advice about building on windows.
What I’ve found with supporting dual Linux/Windows architectures is, 1) supporting Windows cross-compilation is simple because your supporting library structure can be insular to your application, and 2) supporting Windows cross-compilation can be vexing because you have to build your supporting library structure yourself.
Until rawproc 0.7 that I released yesterday, I used mingw-w64 and I cross-compiled my support libraries and installed them to /usr/[arch]/lib and include. That included libjpeg, libtiff, libpng, liblcms2 and libraw, and a couple of supporting libraries. Lensfun bolloxed that up considerably, as it requires glib, and glib requires iconv, and iconv… ow, hurts to recall it. What I finally found that works is mxe, one-stop shopping for building Windows toolchains that included ALL of the libraries I needed. Well, I hand-compiled wxWidgets and Libraw because the mxe versions were not what I wanted, but that worked ok. http://mxe.cc, highly recommended.
As qmake seems very silent, I cannot check if all dependencies are present in MSYS2/mingw64. How qmake can be made verbose.
I would like to build in a directory external to local repository and install filmulator and all dependencies in a specific directory (for instance /d/programmes/filmulator/fminstall/<somename>) (bundled build)
I searched in the MSYS2 environment and it seems there is no RGB variable or whatever.
So perhaps it is created during the build process with QT?
I suppressed an other occurence of RGB in colorspaces.cpp and it is ok now.
desktop and extra path
What is the use of those variables? How to set them?
WARNING: desktop.path is not defined: install target not created
WARNING: extra.path is not defined: install target not created
WARNING: desktop.path is not defined: install target not created
WARNING: extra.path is not defined: install target not created
…/filmulator/filmulator-gui/ui/filmImageProvider.cpp:3:10: fatal error: pwd.h: No such file or directory #include <pwd.h>
^~~~~~~
compilation terminated.
pwd.h seems to be part of mingw-w64-x86_64-postgresql package. So I installed it.
pacman indicates that path to pwd.h is /mingw64/include/postgresql/server/port/win32/pwd.h, but it is not found when building.
furthermore, when I edit pwd.h, I find following code:
/*
* src/include/port/win32/pwd.h
*/
error 2
../filmulator/filmulator-gui/database/sqlInsertion.cpp:129:15: error: multiple types in one declaration
Interface interface;
^
../filmulator/filmulator-gui/database/sqlInsertion.cpp:129:15: error: declaration does not declare anything [-fpermissive]
../filmulator/filmulator-gui/database/sqlInsertion.cpp:129:15: error: expected primary-expression before 'struct'
../filmulator/filmulator-gui/database/sqlInsertion.cpp:135:74: error: expected primary-expression before 'struct'
matrix<unsigned short> image = pipeline.processImage(¶mManager, &interface, exif);
I tried to figure out what the <pwd.h> inclusion is for, and… I have no idea. It’s from the very first commit in the gui version of Filmulator, so pretty much I had no idea what I was doing at the time.