CMake的失败,“没有发现文件的编译器/ MSVC-ASM”,尽管它存在

问题描述 投票:3回答:4

我试图生成CMake的Visual Studio项目文件。我在Visual Studio 2017年开发人员命令提示符执行以下命令:

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

一切都正确发现除了ASM编译器(这应该是cl.exe附带的Visual Studio)。我觉得这真是奇怪,因为C ++编译器,这是完全相同的文件,已经找到了!

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

Warning: Did not find file Compiler/MSVC-ASM

有任何想法吗?

visual-studio cmake
4个回答
4
投票

我对VS2013同样的问题,并通过使用enable_language(ASM_MASM)代替enable_language(ASM)的,并迫使汇编代码文件中包含有set_property(SOURCE <file>.S PROPERTY LANGUAGE ASM_MASM)否则文件将不参加在构建解决它。


1
投票

我完全不知道为什么会这样,但它看起来像开发商命令提示符弄乱了一些东西,CMake的使用找到ASM编译器。

这为我工作:

  1. 确保cl.exe是在你的PATH(和你的项目使用的任何其他相关文件)。
  2. 在常规命令提示(或本机工具之一)执行该命令。

1
投票

原来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()

解决方案:创建下MSVC-ASM.cmakec:\Program Files\CMake\share\cmake-3.8\Modules\Compiler,和中提琴,报警消失了。


-1
投票

你有过旧版本的CMake ...所需的文件在旧版本中缺少的...

© www.soinside.com 2019 - 2024. All rights reserved.