Построение на Windows с использованием CMake не удается из-за неправильного флага, переданного в MSVC - PullRequest
0 голосов
/ 06 августа 2020

Я использую CMake для создания проекта на Windows. В репозитории root, где я запускаю CMake, есть файл CMakeLists.txt. Одним из подмодулей проекта является библиотека gflags, которая, похоже, тоже имеет свою CMakeLists.txt.

Я получаю следующую ошибку при запуске CMake из проекта root:

Building project at build/Release
-- Selecting Windows SDK version 10.0.16299.0 to target Windows 10.0.18363.
CMake Error at external/gflags/CMakeLists.txt:282 (message):
  Do not know how to define a 32-bit integer quantity on your system! Neither
  uint32_t, u_int32_t, nor __int32 seem to be available.  Set
  [GFLAGS_]INTTYPES_FORMAT to either C99, BSD, or VC7 and try again.


-- Configuring incomplete, errors occurred!
See also "C:/Users/me/project/CMakeFiles/CMakeOutput.log".
See also "C:/Users/me/project/CMakeFiles/CMakeError.log".
Build failed

Глядя на CMakeError.log, можно увидеть следующее:

Determining size of __int32 failed with the following output:
Change Dir: C:/Users/me/project/CMakeFiles/CMakeTmp

Run Build Command(s):C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/MSBuild/15.0/Bin/MSBuild.exe cmTC_5c7a4.vcxproj /p:Configuration=Debug /p:Platform=Win32 /p:VisualStudioVersion=15.0 /v:m && Microsoft (R) Build Engine version 15.6.85.37198 for .NET Framework

Copyright (C) Microsoft Corporation. All rights reserved.



  Microsoft (R) C/C++ Optimizing Compiler Version 19.13.26132 for x86

  Copyright (C) Microsoft Corporation.  All rights reserved.

  

  cl /c /Zi /W3 /WX- /diagnostics:classic /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"cmTC_5c7a4.dir\Debug\\" /Fd"cmTC_5c7a4.dir\Debug\vc141.pdb" /Gd /TP /analyze- /errorReport:queue  -Werror C:\Users\me\project\CMakeFiles\CheckTypeSize\__int32.cpp

cl : Command line error D8021: invalid numeric argument '/Werror' [C:\Users\me\project\CMakeFiles\CMakeTmp\cmTC_5c7a4.vcxproj]

Итак, как вы видите, где-то что-то пытается передать флаг /Werror компилятору Microsoft, который, конечно, не знает этот флаг.

Я закомментировал любую строку, имеющую отношение к Werror в любом файле CMakeLists.txt в проекте. Не помогло.

В чем заключается основная проблема и как ее исправить?

...