【发布时间】:2017-02-15 17:11:49
【问题描述】:
我正在尝试使用 MinGW-w64 (x86_64) 编译 libpng。我已经使用MinGW Makefiles 生成器在 CMake 中设置了 libpng。运行 make 时,我得到以下输出:
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 的头文件?第 9 行的 stdlib.h 包括 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
【问题讨论】:
-
您的环境似乎已损坏。您是否从 Visual Studio 命令提示符运行 cmake?涉及的软件版本有哪些?
-
@rubenvb 忘了说,我使用的是 cmake-gui 3.5.2; MinGW-w64 x86_64-4.9.2-posix-seh-rt_v3-rev1;和 libpng v16 (1617);我目前正在尝试以某种方式将我的所有环境变量重置为默认值。
标签: cmake mingw mingw32 mingw-w64