Home > Blockchain >  Cannot compile exqlite on Windows
Cannot compile exqlite on Windows

Time:11-12

Background

I am trying to run this Elixir desktop app in my Windows VM: https://github.com/elixir-desktop/desktop-example-app

I have installed Erlang OTP 24.X manually in my windows: https://erlang.org/download/otp_win64_24.1.4.exe

And I have installed Elixir via the official website after, and have it configured to use the Erlang/OTP version I mentioned before: https://elixir-lang.org/install.html#windows

Problem

So, I cloned the project and run mix deps.get as usual. After that I ran mix deps.compile and I got an error:

λ mix deps.compile
===> Analyzing applications...
===> Compiling dbus
===> Analyzing applications...
===> Compiling ranch
===> Analyzing applications...
===> Compiling telemetry
==> exqlite
could not compile dependency :exqlite, "mix compile" failed. You can recompile this dependency with "mix deps.compile exqlite", update it with "mix deps.update exqlite" or clean it with "mix deps.clean exqlite"
** (Mix) "nmake" not found in the path. If you have set the MAKE environment variable,
please make sure it is correct.

This means I have an issue with a dependency:

λ mix deps.compile exqlite
==> exqlite
could not compile dependency :exqlite, "mix compile" failed. You can recompile this dependency with "mix deps.compile exqlite", update it with "mix deps.update exqlite" or clean it with "mix deps.clean exqlite"
** (Mix) "nmake" not found in the path. If you have set the MAKE environment variable,
please make sure it is correct.

What I tried

So, I am guessing my sqlite installation on my windows is not well done. I have installed sqlite in windows by following this tutorial:

https://www.tutorialspoint.com/sqlite/sqlite_installation.htm

Which boils down to:

  1. Go to SQLite download page, and download precompiled binaries from Windows section.
  2. Download sqlite-shell-win32-*.zip and sqlite-dll-win32-*.zip zipped files.
  3. − Create a folder C:\>sqlite and unzip above two zipped files in this folder, which will give you sqlite3.def, sqlite3.dll and sqlite3.exe files.
  4. − Add C:\>sqlite in your PATH environment variable and finally go to the command prompt and issue sqlite3 command, which should work.

And in fact when I type sqlite3 in my prompt, it does work.

However I understand I am still missing some step, but I can't figure out what.

Question

What am I missing to compile the dependency?

CodePudding user response:

Turns out my issue is because exqlite uses a NIF. This means I needed to do an extra setup step for windows, where I install the cpp tools and then compile the exqlite using this prompt:

  • cmd /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat"

The full guide can be seen here: https://hexdocs.pm/exqlite/windows.html

More information on the official forum:

  • Related