【问题标题】:CMake + Visual Studio 2019: error invalid argument '/Wno-narrowing'CMake + Visual Studio 2019:错误无效参数'/Wno-narrowing'
【发布时间】:2021-08-22 00:12:45
【问题描述】:

我下载了一个库的源代码,该库类似于处理库,但用于名为libxd 的 c++。我使用 CMake 为成功运行的 Visual Studio 2019 生成项目文件。在尝试为所有提供的构建模式编译解决方案时,我收到以下错误:

第一个错误invlaid numeric argument '/Wno-narrowing' 是我现在关心的问题。我试图弄清楚为什么将这个参数提供给编译器。在解决方案中查看xd 项目的属性窗口时,我可以在C/C++ > Command Line 选项卡中看到应该提供给编译器的命令行参数。我确认没有提供/Wno-narrowing 选项。查看构建输出时,可以看到选项-Wno-narrowing 正在提供给编译器。有人可以帮我弄清楚为什么要通过这个论点吗?我查看了整个编译器属性窗口,看看是否可以看到任何会影响它的东西,但我看不到任何会影响它的东西。

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\HostX64\x64\CL.exe /c /IC:\dev\libxd\include /IC:\dev\libxd\lib\glad\include /IC:\dev\libxd\lib\glm /IC:\dev\libxd\lib\stb\include /IC:\dev\libxd\lib\glfw\include /Zi /nologo /W3 /WX- /diagnostics:column /Od /Ob0 /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"xd.dir\Debug\\" /Fd"xd.dir\Debug\xd.pdb" /Gd /TP /errorReport:prompt  -Wno-narrowing C:\dev\libxd\src\opensans.cpp
Tracking command:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Tracker.exe /d "C:\Program Files (x86)\MSBuild\15.0\FileTracker\FileTracker32.dll" /i C:\dev\libxd\build\xd.dir\Debug\xd.tlog /r C:\DEV\LIBXD\SRC\OPENSANS.CPP /b MSBuildConsole_CancelEventfa83e1bb599743cfa0c02eb67d579e28  /c "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\HostX64\x64\CL.exe"  /c /IC:\dev\Users\olive\Downloads\libxd\include /IC:\dev\libxd\lib\glad\include /IC:\dev\libxd\lib\glm /IC:\dev\libxd\lib\stb\include /IC:\dev\libxd\lib\glfw\include /Zi /nologo /W3 /WX- /diagnostics:column /Od /Ob0 /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"xd.dir\Debug\\" /Fd"xd.dir\Debug\xd.pdb" /Gd /TP /errorReport:prompt  -Wno-narrowing C:\dev\libxd\src\opensans.cpp
cl : command line error D8021: invalid numeric argument '/Wno-narrowing'
The command exited with code 2.

【问题讨论】:

  • "有人能帮我弄清楚为什么这个参数被传递了吗?" - 因为该项目这样做,请参阅其CMakeLists.txt。当为cl 编译器调整选项时,CMake 能够将- 更改为/。但 CMake 不知道编译器是否实际支持该选项。
  • 不幸的是,以非便携方式使用 CMake 非常容易。您尝试构建的项目是不支持 MSVC 的项目示例(但您可以对其进行分叉和改进)。
  • 啊,谢谢。我从文件中删除了该行并成功重建它(尽管有一堆缩小的警告)。

标签: c++ visual-studio cmake visual-studio-2019


【解决方案1】:

错误是因为这不是一个有效的 MSVC 标志。该标志在那里是因为 CMakeLists.txt 文件需要它:

set_source_files_properties(src/opensans.cpp PROPERTIES COMPILE_FLAGS -Wno-narrowing)

该项目指定 what it supports 用于在 Windows 下构建,它不是 MSVC。

Windows 先决条件:mingw-w64 版本 >= 4.8.1

因此您要么需要以支持的方式构建它,要么修改构建脚本以允许 MSVC。

这需要弄清楚标志在 gcc 中的作用(禁用有关缩小问题的诊断消息)并在 MSVC 中找到等效的标志,可能是 /disable:nnnn 变体,一旦你弄清楚 nnnn。弄清楚这一点应该相对轻松,因为 MSVC 会在您编译它时告诉您 - 大量 Cnnnn - something to do with narrowing 警告消息。

或者您可以禁用添加标志的行(仅适用于 MSVC 构建)并查看它是否仍然构建。当然,本着开源的精神,您应该通知作者是如何实现它的,他们可能很乐意支持 MSVC,如果工作量不是太大的话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2021-09-02
    • 2021-04-16
    • 2022-10-14
    • 1970-01-01
    • 2020-01-15
    相关资源
    最近更新 更多