2017-06-11 3 views
0

ich die folgende Meldung erhalten, wenn ich Cmake für llvm/Klirren laufen:Cmake Fehler Gebäude llvm/Klirren unter macOS

-- Performing Test COMPILER_RT_TARGET_HAS_ATOMICS - Success 
CMake Error at cmake/modules/AddLLVM.cmake:589 (if): 
    if given arguments: 

    "LTO" "IN_LIST" "LLVM_DISTRIBUTION_COMPONENTS" "OR" "NOT" "LLVM_DISTRIBUTION_COMPONENTS" 

    Unknown arguments specified 
Call Stack (most recent call first): 
    tools/lto/CMakeLists.txt:19 (add_llvm_library) 


-- Configuring incomplete, errors occurred! 

Hier ist der Befehl, die ich benutze:

cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE = Freigabe -DLLVM_ENABLE_LTO = On -Wno-dev ..

vor ein paar Monaten, ich llvm/Klirren 5.0 erfolgreich aufgebaut. Aber heute habe ich einen "git pull" auf den verschiedenen Verzeichnissen und Unterverzeichnissen gemacht, um die letzten Änderungen aufzunehmen.

Außerdem habe ich meine cmake auf 3.8.2 aktualisiert. Aber das hat nicht geholfen.

Per Antrag eines Kommentator hier ist die Ausgabe ohne die no-dev Option:

-- Performing Test COMPILER_RT_TARGET_HAS_ATOMICS - Success 
CMake Warning (dev) at cmake/modules/AddLLVM.cmake:589 (if): 
    Policy CMP0057 is not set: Support new IN_LIST if() operator. Run "cmake 
    --help-policy CMP0057" for policy details. Use the cmake_policy command to 
    set the policy and suppress this warning. 

    IN_LIST will be interpreted as an operator when the policy is set to NEW. 
    Since the policy is not set the OLD behavior will be used. 
Call Stack (most recent call first): 
    tools/lto/CMakeLists.txt:19 (add_llvm_library) 
This warning is for project developers. Use -Wno-dev to suppress it. 

CMake Error at cmake/modules/AddLLVM.cmake:589 (if): 
    if given arguments: 

    "LTO" "IN_LIST" "LLVM_DISTRIBUTION_COMPONENTS" "OR" "NOT" "LLVM_DISTRIBUTION_COMPONENTS" 

    Unknown arguments specified 
Call Stack (most recent call first): 
    tools/lto/CMakeLists.txt:19 (add_llvm_library) 
+0

Option 'Wno-dev' deaktiviert Warnungen, die den Fehler anzeigen könnten. (Möglicherweise wird 'IN_LIST' nicht von der Version unterstützt, die in' cmake_minimum_required' angegeben ist.) Führen Sie 'cmake' ohne diese Option aus. – Tsyvarev

+0

@Tsyvarev: Ich habe mein Problem aktualisiert, um auch die Ausgabe ohne die Option "no-dev" aufzulisten. – Tal

Antwort

2

Für den Einsatz IN_LIST Operator in if() Ausdruck, Politik CMP0057 aktiviert werden soll. Wie Sie der Warnmeldung entnehmen können, ist dies nicht Ihr Fall.

Die Richtlinie kann über den Befehl cmake_policy(SET) aktiviert werden. Auch cmake_minimum_required aufgerufen mit ausreichender Version ("3.3" in bestimmten Fall) aktiviert automatisch die Richtlinie.

Beachten Sie, dass selbst wenn Sie CMake der höheren Version verwenden, die Richtlinie nicht aktiviert wird: CMake respektiert die in cmake_minimum_required angegebene Version.

+0

Ja. Vielen Dank. Das habe ich auch gerade gemerkt. Ich sehe die CMakeLists.txt auf oberster Ebene für LLVM, aber sie verbreitet sich nicht bis * cmake/modules/AddLLVM.cmake *. Also habe ich die CMP0057-Richtlinie für diese Datei aktiviert und cmake fertiggestellt. Meine Änderung ist nicht der richtige Weg, damit umzugehen. Aber es tut, was ich für den Moment brauche. – Tal