Я пытаюсь скомпилировать libpng с помощью MinGW-w64 (x86_64). Я установил libpng с помощью CMake, используя генератор MinGW Makefiles
. При запуске make я получаю следующий вывод:MinGW использует заголовки Visual Studio вместо своих собственных
Scanning dependencies of target png16
[ 2%] Building C object CMakeFiles/png16.dir/png.obj
In file included from C:/PROGRA~2/MICROS~3.0/VC/include/vcruntime.h:46:0,
from C:/PROGRA~2/MICROS~3.0/VC/include/crtdefs.h:9,
from C:/PROGRA~1/MINGW-~1/X86_64~1.2-P/mingw64/x86_64-w64-mingw32/include/stdlib.h:9,
from C:\CPP\deps\lpng1617\pngpriv.h:42,
from C:\CPP\deps\lpng1617\png.c:14:
C:/PROGRA~2/MICROS~3.0/VC/include/vadefs.h:28:35: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'uintptr_t'
typedef unsigned __int64 uintptr_t;
^
In file included from C:/PROGRA~2/MICROS~3.0/VC/include/crtdefs.h:9:0,
from C:/PROGRA~1/MINGW-~1/X86_64~1.2-P/mingw64/x86_64-w64-mingw32/include/stdlib.h:9,
from C:\CPP\deps\lpng1617\pngpriv.h:42,
from C:\CPP\deps\lpng1617\png.c:14:
C:/PROGRA~2/MICROS~3.0/VC/include/vcruntime.h:81:1: error: unknown type name 'pack'
_CRT_BEGIN_C_HEADER
^
... and more ...
Почему MinGW пытается включить файлы заголовков из Visual Studio? stdlib.h
в строке 9 включает в себя crtdefs.h
, который входит в состав Visual Studio, а не из каталога MinGW. Зачем?
crtdefs.h
существует в каталоге MinGW (рядом с stdlib.h
)
Моя %PATH%
переменная не содержит Visual Studio (и не Windows SDK) папки.
После дополнительного изучения, я обнаружил, что build\CMakeFiles\png16_static.dir\includes_C.rsp
содержит -IC:/PROGRA~2/MICROS~3.0/VC/include
Ваше окружение кажется сломанным. Вы запускаете cmake из командной строки Visual Studio? Каковы версии программного обеспечения? – rubenvb
@rubenvb Забыл отметить, что я использую cmake-gui 3.5.2; MinGW-w64 x86_64-4.9.2-posix-seh-rt_v3-rev1; и libpng v16 (1617); В настоящее время я пытаюсь как-то сбросить все мои переменные среды на значения по умолчанию. – Matusn