我试图生成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
有任何想法吗?
我对VS2013同样的问题,并通过使用enable_language(ASM_MASM)
代替enable_language(ASM)
的,并迫使汇编代码文件中包含有set_property(SOURCE <file>.S PROPERTY LANGUAGE ASM_MASM)
否则文件将不参加在构建解决它。
我完全不知道为什么会这样,但它看起来像开发商命令提示符弄乱了一些东西,CMake的使用找到ASM编译器。
这为我工作:
cl.exe
是在你的PATH(和你的项目使用的任何其他相关文件)。原来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.cmake
空c:\Program Files\CMake\share\cmake-3.8\Modules\Compiler
,和中提琴,报警消失了。
你有过旧版本的CMake ...所需的文件在旧版本中缺少的...