Visual studio CMake失败,出现“错误”;找不到文件编译器/msvc asm“;即使它存在

Visual studio CMake失败,出现“错误”;找不到文件编译器/msvc asm“;即使它存在,visual-studio,cmake,Visual Studio,Cmake,我正在尝试使用CMake生成Visual Studio项目文件。我正在Visual Studio 2017 Developer命令提示符中执行以下命令: cmake -G "Visual Studio 15 2017 Win64" -Thost=x64 ../project 除了ASM编译器(应该是Visual Studio附带的cl.exe)之外,所有内容都可以正确找到。我发现这很奇怪,因为C++编译器是完全相同的文件,已经找到了!p> 作为参考,我在日志中看到这一行: Warning: D

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

cmake -G "Visual Studio 15 2017 Win64" -Thost=x64 ../project
除了ASM编译器(应该是Visual Studio附带的
cl.exe
)之外,所有内容都可以正确找到。我发现这很奇怪,因为C++编译器是完全相同的文件,已经找到了!p> 作为参考,我在日志中看到这一行:

Warning: Did not find file Compiler/MSVC-ASM

有什么想法吗?

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

这对我很有用:

  • 确保
    cl.exe
    位于您的路径中(以及项目使用的任何其他相关文件)

  • 在常规命令提示符(或本机工具提示符)中执行该命令


  • 我在VS2013上也遇到了同样的问题,并通过使用
    enable_language(ASM_MASM)
    而不是
    enable_language(ASM)
    解决了这个问题,并强制将汇编代码文件包含在
    set_属性(SOURCE.S属性语言ASM_MASM)中
    否则该文件将不会参与生成。

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

    结果是
    MSVC-ASM
    是实际CMake模块的名称。
    我正在使用CMake 3.8.2,在我的例子中,它确实丢失了

    MSVC-ASM.cmake
    用于Visual Studio汇编程序的设置的占位符。它可能只是一个空文件:

    我能够使用CMake的
    --trace
    选项追踪到它。 另一个文件
    cmakasmInformation.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
    ,警告消失