Я пытаюсь скомпилировать OpenCV из исходного кода в Windows 10, потому что я подумал, что это способ включить модуль сопоставления поверхностей в библиотеку. Я пытался следовать инструкциям по установке здесь , но когда я пытаюсь выполнить installOCV.sh
изнутри gitbash, как описано выше, он терпит неудачу на полпути, когда CMake пытается протестировать компиляцию с компилятором C и C ++. Вывод скрипта такой:
$ ./installOCV.sh
Already up to date.
Current branch master is up to date.
Already up to date.
Current branch master is up to date.
/c/lib/Build/opencv /c/lib
-- Selecting Windows SDK version to target Windows 10.0.17134.
-- The CXX compiler identification is unknown
-- The C compiler identification is unknown
CMake Error at CMakeLists.txt:131 (project):
No CMAKE_CXX_COMPILER could be found.
CMake Error at CMakeLists.txt:131 (project):
No CMAKE_C_COMPILER could be found.
-- Configuring incomplete, errors occurred!
See also "C:/lib/Build/opencv/CMakeFiles/CMakeOutput.log".
See also "C:/lib/Build/opencv/CMakeFiles/CMakeError.log".
и CMakeError.log отображает следующее (извините, немецкий):
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler:
Build flags:
Id flags:
The output was:
1
Microsoft (R)-Buildmodul, Version 14.0.25420.1
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Der Buildvorgang wurde am 18.01.2019 15:09:13 gestartet.
Projekt "C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdCXX\CompilerIdCXX.vcxproj" auf Knoten "1" (Standardziele).
PrepareForBuild:
Das Verzeichnis "Debug\" wird erstellt.
Das Verzeichnis "Debug\CompilerIdCXX.tlog\" wird erstellt.
InitializeBuildStatus:
"Debug\CompilerIdCXX.tlog\unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.
ClCompile:
CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TP /errorReport:queue CMakeCXXCompilerId.cpp
TRACKER : Fehler TRK0005: Fehler beim Suchen von "CL.exe". Das System kann die angegebene Datei nicht finden.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" wurde mit dem Code 5 beendet. [C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdCXX\CompilerIdCXX.vcxproj]
Die Erstellung des Projekts "C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdCXX\CompilerIdCXX.vcxproj" ist abgeschlossen (Standardziele) -- FEHLER.
Fehler beim Buildvorgang.
"C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdCXX\CompilerIdCXX.vcxproj" (Standardziel) (1) ->
(ClCompile Ziel) ->
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" wurde mit dem Code 5 beendet. [C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdCXX\CompilerIdCXX.vcxproj]
0 Warnung(en)
1 Fehler
Verstrichene Zeit 00:00:00.26
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed.
Compiler:
Build flags:
Id flags:
The output was:
1
Microsoft (R)-Buildmodul, Version 14.0.25420.1
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Der Buildvorgang wurde am 18.01.2019 15:09:14 gestartet.
Projekt "C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdCXX\CompilerIdCXX.vcxproj" auf Knoten "1" (Standardziele).
PrepareForBuild:
Das Verzeichnis "Debug\" wird erstellt.
Das Verzeichnis "Debug\CompilerIdCXX.tlog\" wird erstellt.
InitializeBuildStatus:
"Debug\CompilerIdCXX.tlog\unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.
ClCompile:
CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TP /errorReport:queue CMakeCXXCompilerId.cpp
TRACKER : Fehler TRK0005: Fehler beim Suchen von "CL.exe". Das System kann die angegebene Datei nicht finden.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" wurde mit dem Code 5 beendet. [C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdCXX\CompilerIdCXX.vcxproj]
Die Erstellung des Projekts "C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdCXX\CompilerIdCXX.vcxproj" ist abgeschlossen (Standardziele) -- FEHLER.
Fehler beim Buildvorgang.
"C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdCXX\CompilerIdCXX.vcxproj" (Standardziel) (1) ->
(ClCompile Ziel) ->
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" wurde mit dem Code 5 beendet. [C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdCXX\CompilerIdCXX.vcxproj]
0 Warnung(en)
1 Fehler
Verstrichene Zeit 00:00:00.26
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler:
Build flags:
Id flags:
The output was:
1
Microsoft (R)-Buildmodul, Version 14.0.25420.1
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Der Buildvorgang wurde am 18.01.2019 15:09:14 gestartet.
Projekt "C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdC\CompilerIdC.vcxproj" auf Knoten "1" (Standardziele).
PrepareForBuild:
Das Verzeichnis "Debug\" wird erstellt.
Das Verzeichnis "Debug\CompilerIdC.tlog\" wird erstellt.
InitializeBuildStatus:
"Debug\CompilerIdC.tlog\unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.
ClCompile:
CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TC /errorReport:queue CMakeCCompilerId.c
TRACKER : Fehler TRK0005: Fehler beim Suchen von "CL.exe". Das System kann die angegebene Datei nicht finden.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" wurde mit dem Code 5 beendet. [C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdC\CompilerIdC.vcxproj]
Die Erstellung des Projekts "C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdC\CompilerIdC.vcxproj" ist abgeschlossen (Standardziele) -- FEHLER.
Fehler beim Buildvorgang.
"C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdC\CompilerIdC.vcxproj" (Standardziel) (1) ->
(ClCompile Ziel) ->
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" wurde mit dem Code 5 beendet. [C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdC\CompilerIdC.vcxproj]
0 Warnung(en)
1 Fehler
Verstrichene Zeit 00:00:00.28
Compiling the C compiler identification source file "CMakeCCompilerId.c" failed.
Compiler:
Build flags:
Id flags:
The output was:
1
Microsoft (R)-Buildmodul, Version 14.0.25420.1
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Der Buildvorgang wurde am 18.01.2019 15:09:15 gestartet.
Projekt "C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdC\CompilerIdC.vcxproj" auf Knoten "1" (Standardziele).
PrepareForBuild:
Das Verzeichnis "Debug\" wird erstellt.
Das Verzeichnis "Debug\CompilerIdC.tlog\" wird erstellt.
InitializeBuildStatus:
"Debug\CompilerIdC.tlog\unsuccessfulbuild" wird erstellt, da "AlwaysCreate" angegeben wurde.
ClCompile:
CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TC /errorReport:queue CMakeCCompilerId.c
TRACKER : Fehler TRK0005: Fehler beim Suchen von "CL.exe". Das System kann die angegebene Datei nicht finden.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" wurde mit dem Code 5 beendet. [C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdC\CompilerIdC.vcxproj]
Die Erstellung des Projekts "C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdC\CompilerIdC.vcxproj" ist abgeschlossen (Standardziele) -- FEHLER.
Fehler beim Buildvorgang.
"C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdC\CompilerIdC.vcxproj" (Standardziel) (1) ->
(ClCompile Ziel) ->
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" wurde mit dem Code 5 beendet. [C:\lib\Build\opencv\CMakeFiles\3.13.3\CompilerIdC\CompilerIdC.vcxproj]
0 Warnung(en)
1 Fehler
Verstrichene Zeit 00:00:00.27
Очевидно, что ни $CC
, ни $CXX
не приняты во внимание CMake, хотя они существуют:
$ echo $CC
c:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.11.25503/bin/Hostx64/x64/cl.exe
mark@zws103 MINGW64 /c/lib
$ echo $CXX
c:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.11.25503/bin/Hostx64/x64/cl.exe
PS: конечно, могут быть некоторые проблемы с пробелами в именах файлов, но я попробовал gcc с путем без пробелов, и результат был буквально таким же.
$ $CC
bash: c:/Program: No such file or directory
mark@zws103 MINGW64 /c/lib
$ "$CC"
Microsoft (R) C/C++-Optimierungscompiler Version 19.11.25508.2 f¦r x64
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Syntax: cl [ Option... ] Dateiname... [ /link Linkeroption... ]