Installing Torch7 with Luarocks on Windows with mi

2020-03-01 19:52发布

问题:

I followed the instructions here and set up Lua and Luarocks from scratch, with Mingw. Everything worked fine and I was able to install rocks, including ones which require compiling like LuaSocket.

I followed the instructions on the Torch7 page to install Torch via luarocks. But it fails building. I do not understand why.

Here is the console output. My best guess is that it has something to do with Building for: Visual Studio 9 2008 when I think I want it to use Mingw.

PS C:\WINDOWS\system32> luarocks --server=https://raw.githubusercontent.com/torch/rocks/master install torch
Installing https://raw.githubusercontent.com/torch/rocks/master/torch-scm-1.rockspec...
Using https://raw.githubusercontent.com/torch/rocks/master/torch-scm-1.rockspec... switching to 'build' mode

Missing dependencies for torch:
paths >= 1.0
cwrap >= 1.0

Using https://raw.githubusercontent.com/torch/rocks/master/paths-scm-1.rockspec... switching to 'build' mode
Cloning into 'paths'...
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 10 (delta 0), reused 6 (delta 0)R
Receiving objects: 100% (10/10), 12.24 KiB | 0 bytes/s, done.
Checking connectivity... done.
cmake -E make_directory build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release -DLUALIB=lua51.dll -DLUA_INCDIR="C:/Pro
gram Files (x86)/Lua/5.1/include/" -DLUA_LIBDIR="C:/Program Files (x86)/Lua/5.1/" -DLUADIR="C:\Program Files (x86)\LuaRo
cks\systree/lib/luarocks/rocks/paths/scm-1/lua" -DLIBDIR="C:\Program Files (x86)\LuaRocks\systree/lib/luarocks/rocks/pat
hs/scm-1/lib" -DCMAKE_INSTALL_PREFIX="C:\Program Files (x86)\LuaRocks\systree/lib/luarocks/rocks/paths/scm-1" && mingw32
-make

-- Building for: Visual Studio 9 2008
-- The C compiler identification is MSVC 15.0.30729.1
-- The CXX compiler identification is MSVC 15.0.30729.1
-- Check for working C compiler using: Visual Studio 9 2008
-- Check for working C compiler using: Visual Studio 9 2008 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 9 2008
-- Check for working CXX compiler using: Visual Studio 9 2008 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_BUILD_TYPE


-- Build files have been written to: C:/Users/Daniel/AppData/Local/Temp/luarocks_paths-scm-1-1059/paths/build
mingw32-make: *** No targets specified and no makefile found.  Stop.

Error: Failed installing dependency: https://raw.githubusercontent.com/torch/rocks/master/paths-scm-1.rockspec - Build e
rror: Failed building.

回答1:

The command looks mostly correct, but I think the cmake command needs -G "MSYS Makefiles" option to use mingw instead of VS. You may also need to pull the most recent torch version as it includes several changes that fix some compilation issues with mingw.

Note that I haven't tested the changes with LuaRocks and not sure how to pass that additional option to it, but you should be able to run the same command manually to get the desired result (I compiled it from the command line).



回答2:

cmake appears to use Visual Studio 9 2008, but it "wrongly" uses mingw32-make.exe instead of maybe... nmake.exe. You could run this command:"c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" (adapt to your visual studio path) in the same console, before you execute the luarocks command. Now, cmake should use nmake.