#451·simdjson

LTO build is not working in CMake

Author: theirixCreated Jan 20, 2020Updated Aug 8, 2026
Labelshelp wanted

If the CMAKE_INTERPROCEDURAL_OPTIMIZATION is set to True, it is impossible to build a shared library on Windows. This error was hidden due to the error in CMakeLists.txt until (#449) that leaded to LTO beeing always turned off.

Object files built with LTO cannot be analyzed for symbols by CMake command __create_def that was called for targets with WINDOWS_EXPORT_ALL_SYMBOLS property set (shared library objects). CMake fails silently with an access violation. dumpbin.exe is also unable to extract symbols from the object file.

Command to reproduce:

bash
cmake -DCMAKE_GENERATOR_PLATFORM=x64 -DSIMDJSON_BUILD_STATIC=OFF ..\simdjson
cmake --build . --config Release

Output excerpt:

Auto build dll exports
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: The command "setlocal [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: cd C:\Users\User\sb\src [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: C: [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: C:\Users\User\.conan\data\cmake_installer\1.0\conan\stable\package\1107accd52ae9d40a4deb3874c3e63a8
6559077b\bin\cmake.exe -E __create_def C:/Users/User/sb/src/simdjson.dir/Release/exports.def C:/Users/User/sb/src/simdjson.dir/Release//objects.txt [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: :cmEnd [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: :cmErrorLevel [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: exit /b %1 [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: :cmDone [C:\Users\User\sb\src\simdjson.vcxproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(1335): error MSB3073: if %errorlevel% neq 0 goto :VCEnd [C:\Users\User\sb\src\simdjson.vcxproj]