Opencv: OpenCV 3.1.0-Build schlägt unter Windows mit Ninja Generator fehl

Erstellt am 7. Apr. 2016  ·  3Kommentare  ·  Quelle: opencv/opencv

Dies ist eine Vorlage, die Ihnen hilft, ein Problem zu erstellen, das so schnell wie möglich bearbeitet werden kann. Fühlen Sie sich frei, zusätzliche Informationen hinzuzufügen oder nicht relevante Punkte zu entfernen, wenn Sie diese nicht benötigen.

Wenn Sie eine Frage haben, anstatt einen Fehler zu melden, gehen Sie bitte zu http://answers.opencv.org, wo Sie viel schneller Antworten erhalten.

Bitte geben Sie die Informationen zu Ihrem System an

  • OpenCV-Version: 3.1.0
  • Host-Betriebssystem: Windows 10
  • Compiler & CMake: MSVC 120 & CMake 3.5

    In welchem ​​Teil der OpenCV-Bibliothek hast du das Problem?

  • CMakeLists.txt

    Erwartetes Verhalten

Build erfolgreich

Tatsächliches Verhalten

LINK: Schwerwiegender Fehler LNK1104: Datei 'Files\NVIDIA.obj' kann nicht geöffnet werden

Zusätzliche Beschreibung

Diese Zeile unterbricht den Build mit Ninja unter Windows. Ich denke die Zeile sollte lauten:

# this
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CMAKE_LIBRARY_PATH_FLAG}$<SHELL_PATH:${p}>)
# instead of that
# set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} -L${p})

Aber auch bei dieser Änderung scheitert der Build an den Leerzeichen im Pfad, die Ninja nicht mag. Vielleicht sollte $<SHELL_PATH:...> einen kurzen Pfad zurückgeben, aber das ist ein CMake-Problem.

Als Workaround kann man verwenden:

if(NOT CMAKE_GENERATOR MATCHES "Ninja" AND NOT MSVC)
  set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} -L${p})
endif()   

Dieses Problem betrifft auch konsumierende Projekte, da die Link-Flags in den OpenCVModules*.cmake Dateien landen.

Ich finde Ninja viel schneller als msbuild unter Windows, insbesondere beim Erstellen mit CUDA, daher wäre es schön, wenn OpenCV diesen Generator auch unterstützen würde.

bug builinstall gpcuda (contrib) low

Alle 3 Kommentare

Ein verwandtes Problem zum CMake-Bugtracker gepostet: https://cmake.org/Bug/view.php?id=16053

Sie können die Option /maxcpucount mit msbuild verwenden, um den Build-Prozess zu beschleunigen. Das Beispiel für 4-Kern-CPU:

.cmd cmake --build . --config release -- /maxcpucount:5

@mshabunin mit Respekt, aber das maxcpucount hat wirklich nichts mit der parallelen Kompilierung von Übersetzungseinheiten zu tun.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen