facebook / zstd

Zstandard - Fast real-time compression algorithm
http://www.zstd.net
Other
23.08k stars 2.06k forks source link

MSVC CMake build failed on v1.5.6 #3999

Open nono303 opened 5 months ago

nono303 commented 5 months ago

Describe the bug CMake build with ninja on MSVC 2022 (vs17) failed with error: C:\sdk\src\zstd\build\VS2010\libzstd-dll\libzstd-dll.rc(4): fatal error C1083: Cannot open include file: 'zstd.h': No such file or directory

To Reproduce Steps to reproduce the behavior:

  1. git checkout v1.5.6
  2. cmake -G "Ninja" -DCMAKE_INSTALL_PREFIX=C:\sdk\release\vs17_x64-avx2 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DZSTD_LEGACY_SUPPORT=ON -DZSTD_MULTITHREAD_SUPPORT=ON -DZSTD_BUILD_PROGRAMS=OFF -DZSTD_BUILD_CONTRIB=OFF -DZSTD_BUILD_TESTS=OFF -DZSTD_USE_STATIC_RUNTIME=OFF -DZSTD_PROGRAMS_LINK_SHARED=OFF -DZSTD_BUILD_STATIC=OFF -DZSTD_BUILD_SHARED=ON -DBUILD_SHARED_LIBS=ON C:\sdk\src\zstd\build\cmake
  3. ninja.exe -v install
  4. See error:
    [26/39] Building RC object lib\CMakeFiles\libzstd_shared.dir\C_\sdk\src\zstd\build\VS2010\libzstd-dll\libzstd-dll.rc.res
    FAILED: lib/CMakeFiles/libzstd_shared.dir/C_/sdk/src/zstd/build/VS2010/libzstd-dll/libzstd-dll.rc.res
    C:/sdk/softs/cmake/bin/cmcldeps.exe RC C:\sdk\src\zstd\build\VS2010\libzstd-dll\libzstd-dll.rc lib\CMakeFiles\libzstd_shared.dir\C_\sdk\src\zstd\build\VS2010\libzstd-dll\libzstd-dll.rc.res.d lib\CMakeFiles\libzstd_shared.dir\C_\sdk\src\zstd\build\VS2010\libzstd-dll\libzstd-dll.rc.res "Note: including file: " "C:/sdk/softs/vs22/Community/VC/Tools/MSVC/14.40.33617/bin/Hostx64/x64/cl.exe" C:\WINDOW~1\10\bin\100226~1.0\x64\rc.exe -DXXH_NAMESPACE=ZSTD_ -DZSTD_DLL_EXPORT=1 -DZSTD_HEAPMODE=0 -DZSTD_LEGACY_SUPPORT=5 -DZSTD_MULTITHREAD -D_CONSOLE -D_CRT_SECURE_NO_WARNINGS -Dlibzstd_shared_EXPORTS -I C:\sdk\build\vs17_x64-avx2\zstd\lib -I C:\sdk\src\zstd\build\cmake\lib -DWIN32 -nologo -DZSTD_DISABLE_ASM /fo lib\CMakeFiles\libzstd_shared.dir\C_\sdk\src\zstd\build\VS2010\libzstd-dll\libzstd-dll.rc.res C:\sdk\src\zstd\build\VS2010\libzstd-dll\libzstd-dll.rc
    C:\sdk\src\zstd\build\VS2010\libzstd-dll\libzstd-dll.rc(4): fatal error C1083: Cannot open include file: 'zstd.h': No such file or directory

Expected behavior Build success

Desktop (please complete the following information):

Additional context This patch fix the issue

diff --git a/build/VS2010/libzstd-dll/libzstd-dll.rc b/build/VS2010/libzstd-dll/libzstd-dll.rc
index 13e8746f..7099ddec 100644
--- a/build/VS2010/libzstd-dll/libzstd-dll.rc
+++ b/build/VS2010/libzstd-dll/libzstd-dll.rc
@@ -1,7 +1,7 @@
 // Microsoft Visual C++ generated resource script.
 //

-#include "zstd.h" /* ZSTD_VERSION_STRING */
+#include "../../../lib/zstd.h" /* ZSTD_VERSION_STRING */
 #define APSTUDIO_READONLY_SYMBOLS
 #include "verrsrc.h"
 #undef APSTUDIO_READONLY_SYMBOLS
anarazel commented 1 month ago

To avoid others having to search: This has been fixed in #4019. The fix can The same approach can be used to fix the build for 1.5.6, by adding "-DCMAKE_RC_FLAGS=-I$(pwd)/lib" (when using powershell, it'd look a bit different with cmd).