Visual Studio 2019 Generator gives warnings when building in WSL2 directory
The following log shows what happens when you attempt to build a project generated by CMake in a WSL2 directory. The reason I want to do this is because WSL2 has slow filesystem performance in Windows directories, and I want to share a source directory between a Linux and Windows build.
Build started...
1>------ Build started: Project: ZERO_CHECK, Configuration: Debug x64 ------
1>'\\wsl$\Ubuntu-20.04\home\jbills\test\build'
1>CMD.EXE was started with the above path as the current directory.
1>UNC paths are not supported. Defaulting to Windows directory.
1>Checking Build System
1>CMake is re-running because generate.stamp.list is missing.
1>-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19043.
1>-- Configuring done
1>-- Generating done
1>-- Build files have been written to: //wsl$/Ubuntu-20.04/home/jbills/test/build
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\build\CMakeFiles\491e22517826acccdb1dc2854df8e2bf\generate.stamp.rule" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\491e22517826acccdb1dc2854df8e2bf\generate.stamp.rule" does not exist. This may cause incremental build to work incorrectly.
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\build\CMakeFiles\491e22517826acccdb1dc2854df8e2bf\generate.stamp.rule" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\cmakelists.txt" does not exist. This may cause incremental build to work incorrectly.
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\build\CMakeFiles\491e22517826acccdb1dc2854df8e2bf\generate.stamp.rule" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\3.20.1\cmakeccompiler.cmake" does not exist. This may cause incremental build to work incorrectly.
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\build\CMakeFiles\491e22517826acccdb1dc2854df8e2bf\generate.stamp.rule" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\3.20.1\cmakecxxcompiler.cmake" does not exist. This may cause incremental build to work incorrectly.
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\build\CMakeFiles\491e22517826acccdb1dc2854df8e2bf\generate.stamp.rule" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\3.20.1\cmakerccompiler.cmake" does not exist. This may cause incremental build to work incorrectly.
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\build\CMakeFiles\491e22517826acccdb1dc2854df8e2bf\generate.stamp.rule" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\3.20.1\cmakesystem.cmake" does not exist. This may cause incremental build to work incorrectly.
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8065: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\build\CMakeFiles\491e22517826acccdb1dc2854df8e2bf\generate.stamp.rule" succeeded, but specified output "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\generate.stamp" has not been created. This may cause incremental build to work incorrectly.
1>Done building project "ZERO_CHECK.vcxproj".
2>------ Build started: Project: test, Configuration: Debug x64 ------
2>'\\wsl$\Ubuntu-20.04\home\jbills\test\build'
2>CMD.EXE was started with the above path as the current directory.
2>UNC paths are not supported. Defaulting to Windows directory.
2>Building Custom Rule //wsl$/Ubuntu-20.04/home/jbills/test/CMakeLists.txt
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\CMakeLists.txt" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\cmakelists.txt" does not exist. This may cause incremental build to work incorrectly.
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\CMakeLists.txt" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\3.20.1\cmakeccompiler.cmake" does not exist. This may cause incremental build to work incorrectly.
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\CMakeLists.txt" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\3.20.1\cmakecxxcompiler.cmake" does not exist. This may cause incremental build to work incorrectly.
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\CMakeLists.txt" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\3.20.1\cmakerccompiler.cmake" does not exist. This may cause incremental build to work incorrectly.
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\CMakeLists.txt" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\3.20.1\cmakesystem.cmake" does not exist. This may cause incremental build to work incorrectly.
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8065: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\CMakeLists.txt" succeeded, but specified output "\\wsl$\ubuntu-20.04\home\jbills\test\build\cmakefiles\generate.stamp" has not been created. This may cause incremental build to work incorrectly.
2>test.cpp
2>MSVCRTD.lib(exe_main.obj) : error LNK2019: unresolved external symbol main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
2>\\wsl$\Ubuntu-20.04\home\jbills\test\build\Debug\test.exe : fatal error LNK1120: 1 unresolved externals
2>Done building project "test.vcxproj" -- FAILED.
3>------ Skipped Build: Project: ALL_BUILD, Configuration: Debug x64 ------
3>Project not selected to build for this solution configuration
========== Build: 1 succeeded, 1 failed, 0 up-to-date, 1 skipped ==========
A similar issue occurs if the source is in WSL2 and the build is in Windows.
Build started...
1>------ Build started: Project: ZERO_CHECK, Configuration: Debug x64 ------
1>Checking Build System
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "C:\Users\jbills\Documents\Code\build_test\CMakeFiles\28f0d1a8000a6bbf3d0cadfcd41b7ff0\generate.stamp.rule" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\cmakelists.txt" does not exist. This may cause incremental build to work incorrectly.
1>Done building project "ZERO_CHECK.vcxproj".
2>------ Build started: Project: test, Configuration: Debug x64 ------
2>Building Custom Rule //wsl$/Ubuntu-20.04/home/jbills/test/CMakeLists.txt
2>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Msbuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(241,5): warning MSB8064: Custom build for item "\\wsl$\Ubuntu-20.04\home\jbills\test\CMakeLists.txt" succeeded, but specified dependency "\\wsl$\ubuntu-20.04\home\jbills\test\cmakelists.txt" does not exist. This may cause incremental build to work incorrectly.
2>test.cpp
2>MSVCRTD.lib(exe_main.obj) : error LNK2019: unresolved external symbol main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
2>C:\Users\jbills\Documents\Code\build_test\Debug\test.exe : fatal error LNK1120: 1 unresolved externals
2>Done building project "test.vcxproj" -- FAILED.
3>------ Skipped Build: Project: ALL_BUILD, Configuration: Debug x64 ------
3>Project not selected to build for this solution configuration
========== Build: 1 succeeded, 1 failed, 0 up-to-date, 1 skipped ==========
This latter issue is likely similar to #18120.
To be clear, this doesn't seem to prevent the build from working, it just causes an unnecessary regenerate in the first case, and prevents incremental builds from working in all cases.