私はCMakeの初心者で、最近私の現在のプロジェクトをVisual Studio 2015ソリューションからCMakeプロジェクトに移行しました。数日間はかかりましたが、今は私のプロジェクトが完全に移行され、生成されたVisual Studioソリューションが元のソリューションとまったく同じように見えると感じています。私はまだMSVCとプラットフォームツールセットv140を使用して私のプロジェクトの罰金を構築することができます。今度は、私はプロジェクトを別のコンパイラでビルドしてCMakeのメリットを試したかったのです。特に、私のプロジェクトには、標準に準拠していないと思われるテンプレート関連のコードがいくつかあります。そのため、テンプレート関連のMSVCよりも厳しいClangでビルドしたかったのです。これを行うために、私はCMake GUI、選択したソースコードとバイナリパスを開始し、configureをクリックし、 "Visual Studio 14 2015"を選択し、 "v140_clang_3_7"をプラットフォームツールセットフィールドに入力しました。CMake with VIsual Studio 2015とClang
これをやったときに残念なことに、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".
今私は、このエラーの意味は何であるかまたはそれを引き起こしている可能性がどのような見当がつかないCMakeが明らかにテストプログラムをコンパイルしようとしていることを除けば、失敗します。エラーログ内の「Xamarin」の項目は、特に適切ではないと感じています。私はすでにこの問題を解決するためにいくつかのことを試みました。もともと、私はVisual Studio 2015 Update 1を使用していましたが、実際には別のエラーが発生していました。いくつかのGoogleの調査の後、私はVS2015のアップデート2をインストールすることを決めました。問題を修正できると思っていますが、これはあなたが上に見ているものとは異なるエラーにつながるだけです。
私はオリジナルのVSソリューションを利用して、そこにあるClangにプラットフォームツールセットを設定しようとしました。まだコンパイルされませんでしたが、少なくとも、私には実際には意味をなさない妥当なエラーメッセージが表示されました(ソリューションの「警告レベル」プロパティーには期待していなかった値があります)。しかし、このエラーログでは、どこから問題の原因を探し始めるか分かりません。
私はここで私のCMakeコードを共有することができましたが、それが役立つかどうかはわかりません。プロジェクトコードは複数のファイルに分割されているので、ファイルを共有するのは少し複雑ですし、問題の原因が最初にCMakeファイルで見つかるかどうかもわかりません。私は実際には、問題の原因がプロジェクトコードそのものとは無関係かもしれないと仮定しています。私はこのエラーに関する情報のためにグーグルで試してみましたが、残念ながら私が得たものは約5回のヒットでしたが、そのすべてが上記のエラーログを含み、問題の解決策はありませんでした。私はどこから探し始めるべきかわからない。誰もがこれにいくつかの経験を持って、正しい方向に私を導くことができますか?あなたがアイデアを持っている場合、または私のコードのいずれかがエラーの原因を見つけるのに役立つことを期待していることを知らせてください。
このソート済みの回答はありますか? 'Elementの値が " ProgramDatabase "。 –
jml
という無効な値になっています。残念ながら、私は問題自体を解決しませんでしたが、いくつかを発見しました。まず第一に、Visual Studioは実際には、プロジェクトのすべてのプロパティが、使用しているコンパイラと互換性があることを期待しています。たとえば、clangの警告レベルをmaxに設定するには、/ W4の代わりに-Weverythingを使用します。 cmakeでフラグを手動で設定する場合は、これを考慮する必要があります。さもなければ、どこでもそれらの「無効な値」のエラーが発生します。私がやっていることは(今のところ)CMakeのデフォルトのツールセットを使ってソリューションを生成し、その後VSのツールセットと不良フラグを手動で変更することです。それはうまく動作します。 –