melonDS-emu / melonDS

DS emulator, sorta
https://melonds.kuribo64.net
GNU General Public License v3.0
3.19k stars 527 forks source link

CMake configuration fails on Windows when using the Visual Studio compiler #1708

Open JesseTG opened 1 year ago

JesseTG commented 1 year ago

When attempting to build melonDS on Windows using the Visual Studio compiler, the configure step fails with this output:

C:\Users\Jesse\AppData\Local\JetBrains\Toolbox\apps\CLion\ch-0\231.9011.31\bin\cmake\win\x64\bin\cmake.exe -DCMAKE_BUILD_TYPE=Debug -DBUILD_QT_SDL:BOOL=OFF -S D:\Code\Contributions\melonDS -B D:\Code\Contributions\melonDS\cmake-build-debug-visual-studio
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.36.32534.0
-- The CXX compiler identification is MSVC 19.36.32534.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.36.32532/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Tools/MSVC/14.36.32532/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - not found
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Code/Contributions/melonDS/cmake-build-debug-visual-studio

Cannot get compiler information:
    Compiler exited with error code 2: "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe" @C:\Users\Jesse\AppData\Local\Temp\response-file17591086206694906935 C:\Users\Jesse\AppData\Local\Temp\compiler-file17023480683394511604 | @response-file17591086206694906935=/TP "/DMELONDS_VERSION=\"0.9.5\"" /DOGLRENDERER_ENABLED /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -Og -MDd -std:c++17 /Be /Bd /EP /w /wd4067
    Microsoft (R) C/C++ Optimizing Compiler Version 19.36.32534 for x64
    Copyright (C) Microsoft Corporation.  All rights reserved.

    all:
        @cd D:\Code\Contributions\melonDS\cmake-build-debug-visual-studio\src
        @set INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\include;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um
        @set LIB=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\lib\x64\store\;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64
        @set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.22621.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.22621.0;C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319
        @set CL=
        @set _CL_=
        @set LINK=
        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe @<< C:\Users\Jesse\AppData\Local\Temp\compiler-file17023480683394511604
    /TP "/DMELONDS_VERSION=\"0.9.5\"" /DOGLRENDERER_ENABLED /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -Og -MDd -std:c++17 /Be /Bd /EP /w /wd4067<<

    cl /TP "/DMELONDS_VERSION=\"0.9.5\"" /DOGLRENDERER_ENABLED /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -Og -MDd -std:c++17 /Be /Bd /EP /w /wd4067
    cl : Command line warning D9035 : option 'Og' has been deprecated and will be removed in a future release
    cl : Command line error D8016 : '/RTC1' and '/Og' command-line options are incompatible

    Compiler exited with error code 2: "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe" @C:\Users\Jesse\AppData\Local\Temp\response-file17120244256939696638 C:\Users\Jesse\AppData\Local\Temp\compiler-file17023480683394511604 | @response-file17120244256939696638=/TC "/DMELONDS_VERSION=\"0.9.5\"" /DOGLRENDERER_ENABLED /DWIN32 /D_WINDOWS /Zi /Ob0 /Od /RTC1 -Og -MDd -std:c11 /Be /Bd /EP /w /wd4067
    Microsoft (R) C/C++ Optimizing Compiler Version 19.36.32534 for x64
    Copyright (C) Microsoft Corporation.  All rights reserved.

    all:
        @cd D:\Code\Contributions\melonDS\cmake-build-debug-visual-studio\src
        @set INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\include;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um
        @set LIB=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\lib\x64\store\;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64
        @set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.22621.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.22621.0;C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319
        @set CL=
        @set _CL_=
        @set LINK=
        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe @<< C:\Users\Jesse\AppData\Local\Temp\compiler-file17023480683394511604
    /TC "/DMELONDS_VERSION=\"0.9.5\"" /DOGLRENDERER_ENABLED /DWIN32 /D_WINDOWS /Zi /Ob0 /Od /RTC1 -Og -MDd -std:c11 /Be /Bd /EP /w /wd4067<<

    cl /TC "/DMELONDS_VERSION=\"0.9.5\"" /DOGLRENDERER_ENABLED /DWIN32 /D_WINDOWS /Zi /Ob0 /Od /RTC1 -Og -MDd -std:c11 /Be /Bd /EP /w /wd4067
    cl : Command line warning D9035 : option 'Og' has been deprecated and will be removed in a future release
    cl : Command line error D8016 : '/RTC1' and '/Og' command-line options are incompatible

    Compiler exited with error code 2: "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe" @C:\Users\Jesse\AppData\Local\Temp\response-file18419273446065880741 C:\Users\Jesse\AppData\Local\Temp\compiler-file17023480683394511604 | @response-file18419273446065880741=/TP "/DMELONDS_VERSION=\"0.9.5\"" /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -Og -MDd /std:c++latest /W3 /permissive- /MP /Zi /Zo /EHsc /Zc:throwingNew /Zc:inline /DNOMINMAX /D_CRT_SECURE_NO_WARNINGS -Og -std:c++17 /Be /Bd /EP /w /wd4067
    Microsoft (R) C/C++ Optimizing Compiler Version 19.36.32534 for x64
    Copyright (C) Microsoft Corporation.  All rights reserved.

    /std:c++latest is provided as a preview of language features from the latest C++
    working draft, and we're eager to hear about bugs and suggestions for improvements.
    However, note that these features are provided as-is without support, and subject
    to changes or removal as the working draft evolves. See
    https://go.microsoft.com/fwlink/?linkid=2045807 for details.

    all:
        @cd D:\Code\Contributions\melonDS\cmake-build-debug-visual-studio\src\teakra\src
        @set INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\include;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um
        @set LIB=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\lib\x64\store\;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64
        @set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.22621.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.22621.0;C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319
        @set CL=
        @set _CL_=
        @set LINK=
        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe @<< C:\Users\Jesse\AppData\Local\Temp\compiler-file17023480683394511604
    /TP "/DMELONDS_VERSION=\"0.9.5\"" /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -Og -MDd /std:c++latest /W3 /permissive- /MP /Zi /Zo /EHsc /Zc:throwingNew /Zc:inline /DNOMINMAX /D_CRT_SECURE_NO_WARNINGS -Og -std:c++17 /Be /Bd /EP /w /wd4067<<

    cl /TP "/DMELONDS_VERSION=\"0.9.5\"" /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -Og -MDd /std:c++latest /W3 /permissive- /MP /Zi /Zo /EHsc /Zc:throwingNew /Zc:inline /DNOMINMAX /D_CRT_SECURE_NO_WARNINGS -Og -std:c++17 /Be /Bd /EP /w /wd4067
    cl : Command line warning D9035 : option 'Og' has been deprecated and will be removed in a future release
    cl : Command line error D8016 : '/RTC1' and '/Og' command-line options are incompatible

    Compiler exited with error code 2: "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe" @C:\Users\Jesse\AppData\Local\Temp\response-file16317202368247174521 C:\Users\Jesse\AppData\Local\Temp\compiler-file17023480683394511604 | @response-file16317202368247174521=/TP "/DMELONDS_VERSION=\"0.9.5\"" /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -Og -MDd -std:c++17 /Be /Bd /EP /w /wd4067
    Microsoft (R) C/C++ Optimizing Compiler Version 19.36.32534 for x64
    Copyright (C) Microsoft Corporation.  All rights reserved.

    all:
        @cd D:\Code\Contributions\melonDS\cmake-build-debug-visual-studio\src\teakra\src
        @set INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\include;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um
        @set LIB=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\lib\x64\store\;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64
        @set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.22621.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.22621.0;C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319
        @set CL=
        @set _CL_=
        @set LINK=
        C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\cl.exe @<< C:\Users\Jesse\AppData\Local\Temp\compiler-file17023480683394511604
    /TP "/DMELONDS_VERSION=\"0.9.5\"" /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -Og -MDd -std:c++17 /Be /Bd /EP /w /wd4067<<

    cl /TP "/DMELONDS_VERSION=\"0.9.5\"" /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -Og -MDd -std:c++17 /Be /Bd /EP /w /wd4067
    cl : Command line warning D9035 : option 'Og' has been deprecated and will be removed in a future release
    cl : Command line error D8016 : '/RTC1' and '/Og' command-line options are incompatible

[Failed to reload]

The offender seems to be in src/CMakeLists.txt:

# Workaround for building teakra with -O0 on Windows either failing or hanging forever
target_compile_options(teakra PRIVATE "$<$<CONFIG:DEBUG>:-Og>")

A possible fix is to comment that target_compile_options call out. However, I don't know if it will cause new problems. Nope, I was wrong.

nadiaholmquist commented 1 year ago

MSVC is not supported even if configuration did succeed, but that workaround should probably be made conditional on whether the compiler is GCC.

JesseTG commented 1 year ago

Fair enough. However, I was wrong about the workaround, so I'm back to square one. If I figure out something that keeps MSVC builds from breaking without affecting the actual supported platforms, I'll submit a PR.

nadiaholmquist commented 1 year ago

The other gcc-style build flags that are being set probably breaks it.