【问题标题】:CMake fails with "did not find file compiler/msvc-asm" even though it existsCMake 失败并显示“没有找到文件编译器/msvc-asm”,即使它存在
【发布时间】:2017-08-27 22:58:24
【问题描述】:

我正在尝试使用 CMake 生成 Visual Studio 项目文件。我正在 Visual Studio 2017 开发人员命令提示符中执行以下命令:

cmake -G "Visual Studio 15 2017 Win64" -Thost=x64 ../project

除了 ASM 编译器(应为 Visual Studio 附带的 cl.exe)外,所有内容均已正确找到。我觉得这很奇怪,因为找到了完全相同的文件的 C++ 编译器!

作为参考,我在日志中看到了这一行:

Warning: Did not find file Compiler/MSVC-ASM

有什么想法吗?

【问题讨论】:

    标签: visual-studio cmake


    【解决方案1】:

    我在 VS2013 上遇到了同样的问题,并通过使用 enable_language(ASM_MASM) 而不是 enable_language(ASM) 并使用 set_property(SOURCE <file>.S PROPERTY LANGUAGE ASM_MASM) 强制包含汇编代码文件来解决它,否则该文件将不会参与构建。

    【讨论】:

      【解决方案2】:

      我不完全知道为什么会发生这种情况,但看起来开发人员命令提示符弄乱了 CMake 用来查找 ASM 编译器的东西。

      这对我有用:

      1. 确保 cl.exe 在您的 PATH(以及您的项目使用的任何其他相关文件)中。

      2. 在常规命令提示符(或 Native Tools 提示符)中执行命令。

      【讨论】:

        【解决方案3】:

        原来MSVC-ASM 是实际 CMake 模块的名称。
        我正在使用 CMake 3.8.2,就我而言,它确实丢失了!

        MSVC-ASM.cmake 用于 Visual Studio 汇编器的设置的占位符。它可能只是一个空文件:
        https://github.com/Kitware/CMake/blob/master/Modules/Compiler/MSVC-ASM.cmake

        我能够使用 CMake 的 --trace 选项对其进行跟踪。 它被另一个文件 CMakeASMInformation.cmake 包含,如果未找到,则会打印该警告:

        # Load compiler-specific information.
        set(_INCLUDED_FILE "")
        if(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
          include(Compiler/${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT} OPTIONAL  RESULT_VARIABLE _INCLUDED_FILE)
        endif()
        if(NOT _INCLUDED_FILE)
          if("ASM${ASM_DIALECT}" STREQUAL "ASM")
            message(STATUS "Warning: Did not find file Compiler/${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-ASM${ASM_DIALECT}")
          endif()
          include(Platform/${CMAKE_BASE_NAME} OPTIONAL)
        endif()
        

        解决办法:c:\Program Files\CMake\share\cmake-3.8\Modules\Compiler下创建了一个空的MSVC-ASM.cmake,中提琴,警告消失了。

        【讨论】:

          【解决方案4】:

          您的 CMake 版本太旧...旧版本中缺少所需的文件...

          【讨论】:

            猜你喜欢
            • 2023-01-10
            • 2021-05-08
            • 2017-10-19
            • 2021-11-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多