Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 使用VIsual Studio 2015和Clang制作CMake_Visual Studio_Visual Studio 2015_Cmake_Clang_Cmake Gui - Fatal编程技术网

Visual studio 使用VIsual Studio 2015和Clang制作CMake

Visual studio 使用VIsual Studio 2015和Clang制作CMake,visual-studio,visual-studio-2015,cmake,clang,cmake-gui,Visual Studio,Visual Studio 2015,Cmake,Clang,Cmake Gui,我是CMake的初学者,最近刚将当前项目从Visual Studio 2015解决方案迁移到CMake项目。我花了几天时间,但现在我的项目已经完全迁移,生成的VisualStudio解决方案看起来和感觉都与原始解决方案一模一样。当使用MSVC和平台工具集v140时,我仍然可以很好地构建我的项目。现在,在所有这些之后,我想通过使用不同的编译器构建我的项目来尝试CMake的好处。特别是,我的项目中有一些与模板相关的代码,我认为这些代码不太符合标准,所以我想用Clang来构建它,我知道在与模板相关的东

我是CMake的初学者,最近刚将当前项目从Visual Studio 2015解决方案迁移到CMake项目。我花了几天时间,但现在我的项目已经完全迁移,生成的VisualStudio解决方案看起来和感觉都与原始解决方案一模一样。当使用MSVC和平台工具集v140时,我仍然可以很好地构建我的项目。现在,在所有这些之后,我想通过使用不同的编译器构建我的项目来尝试CMake的好处。特别是,我的项目中有一些与模板相关的代码,我认为这些代码不太符合标准,所以我想用Clang来构建它,我知道在与模板相关的东西上,Clang比MSVC更严格。为此,我启动了CMake GUI,选择源代码和二进制路径,单击配置,选择“VisualStudio 14 2015”,并在平台工具集字段中键入“v140_clang_3_7”,保留所有其他设置不变

不幸的是,执行此操作时,CMake无法配置(并生成)我的解决方案,出现以下错误:

The C compiler identification is Clang 3.7.0
The CXX compiler identification is Clang 3.7.0
Check for working C compiler using: Visual Studio 14 2015
Check for working C compiler using: Visual Studio 14 2015 -- broken
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.5/Modules/CMakeTestCCompiler.cmake:61 (message):
  The C compiler "C:/Program Files (x86)/Microsoft Visual Studio
  14.0/VC/bin/cl.exe" is not able to compile a simple test program.

  It fails with the following output:

   Change Dir: C:/Users/marku/Desktop/build_muell/CMakeFiles/CMakeTmp



  Run Build Command:"C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe"
  "cmTC_c4641.vcxproj" "/p:Configuration=Debug" "/p:VisualStudioVersion=14.0"

  Microsoft (R)-Buildmodul, Version 14.0.25123.0


  Copyright (C) Microsoft Corporation.  Alle Rechte vorbehalten.





  Der Buildvorgang wurde am Mo, 23.05.2016 00:52:13 gestartet.


  Das in einem BeforeTargets-Attribut bei "C:\Program Files
  (x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets
  (34,37)" aufgef�hrte Ziel "_ConvertPdbFiles" ist nicht im Projekt vorhanden
  und wird daher ignoriert.


  Das in einem AfterTargets-Attribut bei "C:\Program Files
  (x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets
  (34,70)" aufgef�hrte Ziel "_CollectPdbFiles" ist nicht im Projekt vorhanden
  und wird daher ignoriert.


  Das in einem BeforeTargets-Attribut bei "C:\Program Files
  (x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets
  (40,38)" aufgef�hrte Ziel "_CollectMdbFiles" ist nicht im Projekt vorhanden
  und wird daher ignoriert.


  Das in einem AfterTargets-Attribut bei "C:\Program Files
  (x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets
  (40,71)" aufgef�hrte Ziel "_CopyMdbFiles" ist nicht im Projekt vorhanden
  und wird daher ignoriert.


  Projekt
  "C:\Users\marku\Desktop\build_muell\CMakeFiles\CMakeTmp\cmTC_c4641.vcxproj"
  auf Knoten "1" (Standardziele).


  PrepareForBuild:


    Das Verzeichnis "cmTC_c4641.dir\Debug\" wird erstellt.

    Das Verzeichnis "C:\Users\marku\Desktop\build_muell\CMakeFiles\CMakeTmp\Debug\" wird erstellt.

    Das Verzeichnis "cmTC_c4641.dir\Debug\cmTC_c4641.tlog\" wird erstellt.


  InitializeBuildStatus:


    "cmTC_c4641.dir\Debug\cmTC_c4641.tlog\unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.


  C:\Program Files
  (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Clang.targets(210,5):
  error : Element <DebugInformationFormat> has an invalid value of
  "ProgramDatabase".
  [C:\Users\marku\Desktop\build_muell\CMakeFiles\CMakeTmp\cmTC_c4641.vcxproj]



  Die Erstellung des Projekts
  "C:\Users\marku\Desktop\build_muell\CMakeFiles\CMakeTmp\cmTC_c4641.vcxproj"
  ist abgeschlossen (Standardziele) -- FEHLER.





  Fehler beim Buildvorgang.






  "C:\Users\marku\Desktop\build_muell\CMakeFiles\CMakeTmp\cmTC_c4641.vcxproj"
  (Standardziel) (1) ->


  (ClCompile Ziel) -> 


    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Clang.targets(210,5): error : Element <DebugInformationFormat> has an invalid value of "ProgramDatabase". [C:\Users\marku\Desktop\build_muell\CMakeFiles\CMakeTmp\cmTC_c4641.vcxproj]





      0 Warnung(en)

      1 Fehler





  Verstrichene Zeit 00:00:00.70






  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt


Configuring incomplete, errors occurred!
See also "C:/Users/marku/Desktop/build_muell/CMakeFiles/CMakeOutput.log".
See also "C:/Users/marku/Desktop/build_muell/CMakeFiles/CMakeError.log".
C编译器标识为Clang 3.7.0
CXX编译器标识为Clang 3.7.0
使用Visual Studio 14 2015检查C编译器是否正常工作
使用Visual Studio 14 2015检查C编译器是否正常工作--已损坏
C:/Program Files(x86)/CMake/share/CMake-3.5/Modules/CMakeTestCCompiler处的CMake错误。CMake:61(消息):
C编译器“C:/ProgramFiles(x86)/Microsoft Visual Studio
14.0/VC/bin/cl.exe“无法编译简单的测试程序。
它失败,输出如下:
更改目录:C:/Users/marku/Desktop/build\u muell/CMakeFiles/CMakeTmp
运行生成命令:“C:/ProgramFiles(x86)/MSBuild/14.0/bin/MSBuild.exe”
“cmTC_c4641.vcxproj”“/p:Configuration=Debug”“/p:VisualStudioVersion=14.0”
Microsoft(R)-Buildmodul,版本14.0.25123.0
版权所有(C)微软公司。好的。
密苏里州沃尔冈-沃尔德大厦,2016年5月23日00:52:13盖世太特。
在einem BeforeTargets属性bei“C:\Program Files中的Das
(x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets
(34,37)“aufgef�“转换文件”在项目中不起作用
我和达赫·伊格诺里特在一起。
einem中的Das后目标属性bei“C:\Program Files
(x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets
(34,70)“aufgef�“收藏文件”是一个项目
我和达赫·伊格诺里特在一起。
在einem BeforeTargets属性bei“C:\Program Files中的Das
(x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets
(40,38)“aufgef�“收藏文件”是一个不受欢迎的项目
我和达赫·伊格诺里特在一起。
einem中的Das后目标属性bei“C:\Program Files
(x86)\MSBuild\14.0\Microsoft.Common.targets\ImportAfter\Xamarin.Common.targets
(40,71)“aufgef�“复制文件”在项目中不起作用
我和达赫·伊格诺里特在一起。
项目
“C:\Users\marku\Desktop\build\u muell\CMakeFiles\CMakeTmp\cmTC\u c4641.vcxproj”
auf Knoten“1”(标准化)。
PrepareForBuild:
“cmTC_c4641.dir\Debug\”是一个很好的例子。
Das Verzeichnis“C:\Users\marku\Desktop\build\u muell\CMakeFiles\CMakeTmp\Debug\”wird-erstellt。
这句话的意思是:“cmTC_c4641.dir\Debug\cmTC_c4641.tlog\”这句话的意思是。
初始化BuildStatus:
“cmTC_c4641.dir\Debug\cmTC_c4641.tlog\unsuccessfullbuild”wird erstellt,da“AlwaysCreate”angegeben wurde。
C:\程序文件
(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Clang.targets(210,5):
错误:元素的值无效
“程序数据库”。
[C:\Users\marku\Desktop\build\u muell\CMakeFiles\CMakeTmp\cmTC\u c4641.vcxproj]
工程设计
“C:\Users\marku\Desktop\build\u muell\CMakeFiles\CMakeTmp\cmTC\u c4641.vcxproj”
这是abgeschlossen(标准)——费勒。
费勒·贝姆·沃冈。
“C:\Users\marku\Desktop\build\u muell\CMakeFiles\CMakeTmp\cmTC\u c4641.vcxproj”
(标准化)(1)->
(克莱尔)->
C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Clang.targets(210,5):错误:元素的“ProgramDatabase”值无效。[C:\Users\marku\Desktop\build\u muell\CMakeFiles\CMakeTmp\cmTC\u c4641.vcxproj]
0华农(英)
1费勒
Verstrichene Zeit 00:00:00.70
CMake将无法正确生成此项目。
调用堆栈(最新调用优先):
CMakeLists.txt
配置不完整,出现错误!
另请参见“C:/Users/marku/Desktop/build\u muell/CMakeFiles/CMakeOutput.log”。
另请参见“C:/Users/marku/Desktop/build\u muell/CMakeFiles/CMakeError.log”。
现在我不知道这个错误是什么意思,也不知道是什么导致了这个错误,除了CMake显然试图编译一个失败的测试程序。错误日志中的“Xamarin”内容感觉特别不合适。我已经尝试了一些方法来解决这个问题。最初,我在Visual Studio 2015 Update 1上,实际上遇到了一个不同的错误(我不记得了,因为我没有记录它)。经过谷歌的一些研究,我决定安装VS2015的更新2,希望它能解决这个问题,但它只会导致一个不同的错误,这就是你在上面看到的错误

出于好奇,我还采用了我最初的VS解决方案,并尝试将平台工具集设置为叮当作响。它仍然没有编译,但至少它给了我一个合理的错误消息,这对我来说是有意义的(提到解决方案的“警告级别”属性有一个它没有预料到的值)。但是,有了这个错误日志,我甚至不知道从哪里开始寻找问题的根源

现在我可以在这里分享我的CMake代码,但我不确定这是否有用。项目代码分为多个文件,因此共享它有点复杂,我也不确定问题的原因是否首先可以通过CMake文件找到。我实际上假设c
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
    set(CMAKE_CXX_FLAGS_DEBUG   "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -g2 -gdwarf-2 -fexceptions")
else ()
    # for cl.exe
endif ()