From db99cdf50cd003c8364c0e90fd90bdedeeed470f Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Wed, 29 Apr 2026 13:36:26 -0700 Subject: [PATCH] Add /Zc:preprocessor for CUDA 13.2 on MSVC. Hopefully resolves the following build error: ``` Run Build Command(s): D:\downloads\tools\ninja-1.13.2-windows\ninja.exe -v -v -j33 install [1/32] C:\PROGRA~1\NVIDIA~2\CUDA\v13.2\bin\nvcc.exe -forward-unknown-to-host-compiler -Dpopsift_EXPORTS -ID:\b\popsift\src\v0.10.0-4df863d942.clean\src -ID:\b\popsift\x64-windows-dbg\src\generated -ID:\b\popsift\x64-windows-dbg\src\generated\popsift -isystem "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.2\include" -isystem "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.2\include\cccl" -D_WINDOWS -Xcompiler=" /EHsc" -Xcompiler=" -Zi -Ob0 -Od /RTC1" -std=c++17 -arch=all-major -Xcompiler=-MDd -MD -MT src\CMakeFiles\popsift.dir\popsift\s_filtergrid.cu.obj -MF src\CMakeFiles\popsift.dir\popsift\s_filtergrid.cu.obj.d -x cu -rdc=true -c D:\b\popsift\src\v0.10.0-4df863d942.clean\src\popsift\s_filtergrid.cu -o src\CMakeFiles\popsift.dir\popsift\s_filtergrid.cu.obj -Xcompiler=-Fdsrc\CMakeFiles\popsift.dir\,-FS FAILED: [code=2] src/CMakeFiles/popsift.dir/popsift/s_filtergrid.cu.obj C:\PROGRA~1\NVIDIA~2\CUDA\v13.2\bin\nvcc.exe -forward-unknown-to-host-compiler -Dpopsift_EXPORTS -ID:\b\popsift\src\v0.10.0-4df863d942.clean\src -ID:\b\popsift\x64-windows-dbg\src\generated -ID:\b\popsift\x64-windows-dbg\src\generated\popsift -isystem "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.2\include" -isystem "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.2\include\cccl" -D_WINDOWS -Xcompiler=" /EHsc" -Xcompiler=" -Zi -Ob0 -Od /RTC1" -std=c++17 -arch=all-major -Xcompiler=-MDd -MD -MT src\CMakeFiles\popsift.dir\popsift\s_filtergrid.cu.obj -MF src\CMakeFiles\popsift.dir\popsift\s_filtergrid.cu.obj.d -x cu -rdc=true -c D:\b\popsift\src\v0.10.0-4df863d942.clean\src\popsift\s_filtergrid.cu -o src\CMakeFiles\popsift.dir\popsift\s_filtergrid.cu.obj -Xcompiler=-Fdsrc\CMakeFiles\popsift.dir\,-FS C:\PROGRA~1\NVIDIA~2\CUDA\v13.2\include\cccl\cuda/std/__cccl/preprocessor.h(23): fatal error C1189: #error: MSVC/cl.exe with traditional preprocessor is used. This may lead to unexpected compilation errors. Please switch to the standard conforming preprocessor by passing `/Zc:preprocessor` to cl.exe. You can define CCCL_IGNORE_MSVC_TRADITIONAL_PREPROCESSOR_WARNING to suppress this warning. s_filtergrid.cu ``` This change was prepared with assistance from GPT 5.4. Related: https://github.com/microsoft/vcpkg/pull/51210 --- src/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 86fc3c1b..11cb5a6a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -49,6 +49,9 @@ target_link_libraries(popsift set_target_properties(popsift PROPERTIES VERSION ${PROJECT_VERSION}) set_target_properties(popsift PROPERTIES DEBUG_POSTFIX "d") set_target_properties(popsift PROPERTIES CUDA_SEPARABLE_COMPILATION ON) +if(MSVC) + target_compile_options(popsift PRIVATE $<$:-Xcompiler=/Zc:preprocessor>) +endif() # build directory containing the automatically generated files set(popsift_generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")