Donnerstag, Februar 27, 2020

Cmake beschwert sich über die falsche Anzahl von Argumenten

SET_TARGET_PROPERTIES(
  wtdbo
PROPERTIES
  VERSION ${VERSION_SERIES}.${VERSION_MAJOR}.${VERSION_MINOR}
  SOVERSION ${WTDBO_SOVERSION}
  DEBUG_POSTFIX "d"
)

Der Fehler ist:

CMake Error at src/Wt/Dbo/CMakeLists.txt:18 (SET_TARGET_PROPERTIES):
set_target_properties Aufruf mit falscher Anzahl von Argumenten

Wenn ich es entfernen so konfiguriert, Prima.

Irgendeine Idee warum?

Dank,

Omer

  • Ich weiß nicht, cmake, aber ich dachte, das kann nicht allzu schwierig sein, also habe ich ein wenig gegoogelt, und es sieht gut aus nach dem basic-Handbuch Informationen, die ich finden konnte. Vorschläge: look at Anweisungen vor diesem post ein bisschen mehr von deinem Skript und include-Zeile zahlen, schauen, wo sind die Makros definiert.
InformationsquelleAutor the_drow | 2009-12-19

2 Kommentare

  1. 4

    Sind Sie sicher, dass Sie die Variablen richtig gesetzt? Ich habe mit diesem CMakeLists.txt Datei, und es funktioniert einwandfrei:

    CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
    PROJECT(test CXX)
    ADD_LIBRARY(wtdbo SHARED test.cc)
    SET(WTDBO_SOVERSION 1)
    SET(VERSION_SERIES 1)
    SET(VERSION_MAJOR 0)
    SET(VERSION_MINOR 0)
    
    SET_TARGET_PROPERTIES(
      wtdbo
    PROPERTIES
      VERSION ${VERSION_SERIES}.${VERSION_MAJOR}.${VERSION_MINOR}
      SOVERSION ${WTDBO_SOVERSION}
      DEBUG_POSTFIX "d"
    )
    

    Allerdings, wenn ich kommentiere die SET(WTDBO_SOVERSION 1) Zeile bekomme ich die gleiche Fehlermeldung wie du. Hilfe für set_target_properties ist wie folgt, so sind Sie auf jeden Fall das richtige tun:

    Ziele können über Eigenschaften verfügen, die
    beeinflussen, wie Sie gebaut sind.

    set_target_properties(target1 target2 ...
               PROPERTIES prop1 value1
               prop2 value2 ...)
    

    Eigenschaften festlegen auf ein Ziel. Die
    syntax für den Befehl ist, um eine Liste aller
    die Dateien, die Sie ändern möchten, und dann
    liefern die Werte, die Sie festlegen möchten
    weiter. Sie können jede prop Wert-paar
    Sie möchten und extrahieren Sie Sie später mit der
    GET_TARGET_PROPERTY Befehl.

  2. 8

    Denken Sie daran, dass dies ein makro ist, damit die Symbole ersetzt werden, bevor Sie ausgewertet wird. Dies bedeutet, dass Symbole, die leere Zeichenfolgen ersetzt werden, um nichts vor, das ausgewertet wird. Also, wenn WTDBO_SOVERSION ist „“ dann

    SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION ${WTDBO_SOVERSION})
    

    werden würde

    SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION)
    

    würden und diese die den Fehler auslösen. Wenn leere strings sind gültig für Ihren Zweck surround dann das symbol in Anführungszeichen. z.B.

    SET_TARGET_PROPERTIES(wtdbo PROPERTIES SOVERSION "${WTDBO_SOVERSION}")
    

Kostenlose Online-Tests