TeskaLabs/cysimdjson

Doesn't build on Windows + MSVC

quartzsaber opened this issue · 4 comments

Installing cysimdjson using pip on Windows with MSVC fails.

It is due to MSVC not understanding the compiler flag -Wno-deprecated when compiling cysimdjson.cpp.

Also, MSVC won't understand -std=c++17 and will ignore the flag (and use C++11). The syntax for MSVC is /std:c++17.

Here is the relevent error log:

  building 'cysimdjson.cysimdjson' extension
  creating build\temp.win-amd64-cpython-37
  creating build\temp.win-amd64-cpython-37\Release
  creating build\temp.win-amd64-cpython-37\Release\cysimdjson
  creating build\temp.win-amd64-cpython-37\Release\cysimdjson\pysimdjson
  creating build\temp.win-amd64-cpython-37\Release\cysimdjson\simdjson
  "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -Icysimdjson "-IC:\Program Files\Python37\include" "-IC:\Program Files\Python37\Include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.31.31103\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\cppwinrt" /EHsc /Tpcysimdjson/cysimdjson.cpp /Fobuild\temp.win-amd64-cpython-37\Release\cysimdjson/cysimdjson.obj -std=c++17 -Wno-deprecated
  cl : command line error D8021 : Invalid numeric argument '/Wno-deprecated'
  error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.31.31103\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
  ----------------------------------------
  ERROR: Failed building wheel for cysimdjson

I am facing the same issue, Is this repo active?

I can confirm that this issue still exists as of October.

#40 I came up with a possible solution for windows users that I think may help solve this problem. turns out the flag for windows is called /std:c++17 This flag allows for windows to compile the code correctly