cmake find_path nicht wie erwartet funktioniert

Habe ich Folgendes CMake-Skript, es funktioniert:

find_path(
  GLES_SDK_INCLUDE_DIR
  NAMES "GLES2/gl2.h"
  PATHS "${CMAKE_FRAMEWORK_PATH}/include")

Aber das kehrt man eine -NOTFOUND:

find_path(
  GLES_SDK_INCLUDE_DIR
  NAMES "gl2.h"
  PATHS "${CMAKE_FRAMEWORK_PATH}/include/GLES2")

Warum? Irgendeine Idee?

  • So, beide codes funktionieren nicht? Müssen Sie tatsächlich eine Datei ${CMAKE_FRAMEWORK_PATH}/include/GLES2/gl2.h? (Sie können die Ausgabe-Pfad mit message() Befehl für das Ergebnis der Dereferenzierung). Verwenden Sie cross-kompilieren?
  • Nein, der erste code funktioniert. Nicht den zweiten code ! Es ist der Grund, warum es seltsam aussieht ?
  • Ja, das sieht seltsam aus. Und was ist das Ergebnis der Suche in der ersten(erfolgreichen) Fall?
  • Ich Stimme mit Tsyvarev beide Befehle sollten funktionieren, wenn die Datei vorhanden ist (obwohl der zweite gibt einen anderen Weg als die erste). Wir werden mehr Informationen benötigen, um Ihnen dabei helfen: Bitte setzen Sie together komplett, minimal-Beispiel. Auch die genaue Ausgabe produziert, die von den ersten finden, die hilfreich sein könnten.
  • Ich denke, es ist ein problem mit caching.
  • Es ist nicht mehr code, alles ist hier enthalten in einer FindGLES.cmake Datei. Ich glaube nicht, dass eine Zwischenspeicherung im Zusammenhang, denn ich beginne einen neuen build erstellen und ich lösche alle Variablen manuell (CMake-GUI). Auch dann, wenn der .cmake-Datei enthält nur die zweite find_path, es ist gescheitert !
  • Bitte geben Sie genau Inhalt der variable GLES_SDK_INCLUDE_DIR nach der ersten (erfolgreichen) Skript. E. g., mit message("Result: ${GLES_SDK_INCLUDE_DIR}"). Dies kann werfen etwas Licht auf das problem. Kein muss aggressiv sein: wir wollen, um das problem zu beheben zu. Dies ist üblich, debugging-Verfahren, wenn man prüft viele Dinge, die offensichtlich zu sein scheint.
  • Tut find_path(GLES_SDK_INCLUDE_DIR NAMES "GLES2/gl2.h") auch arbeiten? Meine Vermutung ist, dass CMake findet den header in der Standard-Pfade. CMAKE_FRAMEWORK_PATH scheint eine seltsame Wahl, als eine weitere Suche nach Weg, da die variable enthält eine "Liste der Verzeichnisse, die Angabe eines Suchpfades für OS X-frameworks verwendet, die von der find_library(), find_package(), find_path(), und find_file() Befehle." Dass gesagt, Sie könnten versuchen, hinzufügen PATH_SUFFIXES "include/GLES2" statt PATHS "${CMAKE_FRAMEWORK_PATH}/include/GLES2".

InformationsquelleAutor CDZ | 2017-03-20
Schreibe einen Kommentar