CMake失败,"没有找到文件编译器/ msvc-asm"即使它存在

时间:2017-08-27 22:58:25

标签: visual-studio cmake

我尝试使用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

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

我在VS2013上遇到了同样的问题并使用enable_language(ASM)代替set_property(SOURCE <file>.S PROPERTY LANGUAGE ASM_MASM)解决了这个问题,并强制将汇编代码文件包含在 <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/password" android:inputType="textPassword" android:paddingEnd="60dp" android:paddingStart="4dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|end" android:layout_marginEnd="25dp" android:padding="8dp" app:srcCompat="@drawable/ic_email"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center|end" android:padding="8dp" app:srcCompat="@drawable/ic_password"/> </FrameLayout> 中,否则该文件将不会参与建立。

答案 1 :(得分:1)

我不知道为什么会发生这种情况,但看起来开发人员命令提示会混淆CMake用来查找ASM编译器的内容。

这对我有用:

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

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

答案 2 :(得分:1)

事实证明{"data": arrayItens}是实际CMake模块的名称。
我正在使用CMake 3.8.2,在我看来,它确实不见了!

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

我能够使用CMake的MSVC-ASM.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.cmake,然后中提琴,警告消失了。

答案 3 :(得分:-1)

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