在 Windows 上使用 Emscripten 和 CMake 编译 GLFM 时出现问题
Issues compiling GLFM with Emscripten and CMake on Windows
我正在尝试使用 emscripten 和 cmake 编译 GLFM。我按照 GitHub 页面上的说明进行操作,生成所有项目文件的 cmake 命令运行顺利(除了一些弃用警告),但是当我输入 cmake --build .
行时我收到错误。
这是完整的输出:
E:\emproj\glfm\build\emscripten>cmake --build .
Microsoft (R) Build Engine version 15.6.85.37198 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 4/27/2018 3:21:04 PM.
Project "E:\emproj\glfm\build\emscripten\ALL_BUILD.vcxproj" on node 1 (default targets).
Project "E:\emproj\glfm\build\emscripten\ALL_BUILD.vcxproj" (1) is building "E:\emproj\glfm\build\emscripten\ZERO_CHECK
.vcxproj" (2) on node 1 (default targets).
InitializeBuildStatus:
Creating "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
All outputs are up-to-date.
FinalizeBuildStatus:
Deleting file "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild".
Touching "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate".
Done Building Project "E:\emproj\glfm\build\emscripten\ZERO_CHECK.vcxproj" (default targets).
Project "E:\emproj\glfm\build\emscripten\ALL_BUILD.vcxproj" (1) is building "E:\emproj\glfm\build\emscripten\glfm.vcxpr
oj" (3) on node 1 (default targets).
InitializeBuildStatus:
Touching "glfm.dir\Debug\glfm.tlog\unsuccessfulbuild".
CustomBuild:
All outputs are up-to-date.
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.13.26128\bin\HostX86\x86\CL.exe /c /IE
:\emproj\glfm\include /IE:\emproj\glfm\src /nologo /W1 /WX- /diagnostics:classic /O2 /Oy- /D "CMAKE_INTDIR=\"Debug\""
/D _MBCS /Gm- /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"glfm.dir\Debug\" /Fd"glfm.dir\Debug\glfm.
pdb" /Gd /TC /analyze- /FC /errorReport:queue -g -Weverything -Wwrite-strings -Wno-padded -Wno-covered-switch-defaul
t E:\emproj\glfm\src\glfm_platform_emscripten.c
cl : Command line error D8021: invalid numeric argument '/Weverything' [E:\emproj\glfm\build\emscripten\glfm.vcxproj]
Done Building Project "E:\emproj\glfm\build\emscripten\glfm.vcxproj" (default targets) -- FAILED.
Done Building Project "E:\emproj\glfm\build\emscripten\ALL_BUILD.vcxproj" (default targets) -- FAILED.
Build FAILED.
"E:\emproj\glfm\build\emscripten\ALL_BUILD.vcxproj" (default target) (1) ->
"E:\emproj\glfm\build\emscripten\glfm.vcxproj" (default target) (3) ->
(ClCompile target) ->
cl : Command line error D8021: invalid numeric argument '/Weverything' [E:\emproj\glfm\build\emscripten\glfm.vcxproj]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:00.68
它的投诉是关于参数/Weverything
。我查看了项目的 CMakeLists.txt 文件,看起来只有当活动编译器是 clang 时才应该使用此命令。这可能是问题所在吗?它正在使用 visual studio 作为主机,它应该这样做吗?
它说需要 emscripten 1.35.0,这正是我正在使用的版本。
我也按照说明在 Android Studio 中获取了它 运行,它运行得很顺利。
在此先感谢您的帮助!
这个问题的解决方法如下:
不要使用 windows。
我使用了 Ubuntu,除了安装现代版本的 cmake 之外,一切都非常顺利。搜索了一段时间后,可以在此处找到对我有用的方法:https://peshmerge.io/how-to-install-cmake-3-11-0-on-ubuntu-16-04/
我正在尝试使用 emscripten 和 cmake 编译 GLFM。我按照 GitHub 页面上的说明进行操作,生成所有项目文件的 cmake 命令运行顺利(除了一些弃用警告),但是当我输入 cmake --build .
行时我收到错误。
这是完整的输出:
E:\emproj\glfm\build\emscripten>cmake --build .
Microsoft (R) Build Engine version 15.6.85.37198 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Build started 4/27/2018 3:21:04 PM.
Project "E:\emproj\glfm\build\emscripten\ALL_BUILD.vcxproj" on node 1 (default targets).
Project "E:\emproj\glfm\build\emscripten\ALL_BUILD.vcxproj" (1) is building "E:\emproj\glfm\build\emscripten\ZERO_CHECK
.vcxproj" (2) on node 1 (default targets).
InitializeBuildStatus:
Creating "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
All outputs are up-to-date.
FinalizeBuildStatus:
Deleting file "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild".
Touching "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate".
Done Building Project "E:\emproj\glfm\build\emscripten\ZERO_CHECK.vcxproj" (default targets).
Project "E:\emproj\glfm\build\emscripten\ALL_BUILD.vcxproj" (1) is building "E:\emproj\glfm\build\emscripten\glfm.vcxpr
oj" (3) on node 1 (default targets).
InitializeBuildStatus:
Touching "glfm.dir\Debug\glfm.tlog\unsuccessfulbuild".
CustomBuild:
All outputs are up-to-date.
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.13.26128\bin\HostX86\x86\CL.exe /c /IE
:\emproj\glfm\include /IE:\emproj\glfm\src /nologo /W1 /WX- /diagnostics:classic /O2 /Oy- /D "CMAKE_INTDIR=\"Debug\""
/D _MBCS /Gm- /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"glfm.dir\Debug\" /Fd"glfm.dir\Debug\glfm.
pdb" /Gd /TC /analyze- /FC /errorReport:queue -g -Weverything -Wwrite-strings -Wno-padded -Wno-covered-switch-defaul
t E:\emproj\glfm\src\glfm_platform_emscripten.c
cl : Command line error D8021: invalid numeric argument '/Weverything' [E:\emproj\glfm\build\emscripten\glfm.vcxproj]
Done Building Project "E:\emproj\glfm\build\emscripten\glfm.vcxproj" (default targets) -- FAILED.
Done Building Project "E:\emproj\glfm\build\emscripten\ALL_BUILD.vcxproj" (default targets) -- FAILED.
Build FAILED.
"E:\emproj\glfm\build\emscripten\ALL_BUILD.vcxproj" (default target) (1) ->
"E:\emproj\glfm\build\emscripten\glfm.vcxproj" (default target) (3) ->
(ClCompile target) ->
cl : Command line error D8021: invalid numeric argument '/Weverything' [E:\emproj\glfm\build\emscripten\glfm.vcxproj]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:00.68
它的投诉是关于参数/Weverything
。我查看了项目的 CMakeLists.txt 文件,看起来只有当活动编译器是 clang 时才应该使用此命令。这可能是问题所在吗?它正在使用 visual studio 作为主机,它应该这样做吗?
它说需要 emscripten 1.35.0,这正是我正在使用的版本。
我也按照说明在 Android Studio 中获取了它 运行,它运行得很顺利。
在此先感谢您的帮助!
这个问题的解决方法如下:
不要使用 windows。
我使用了 Ubuntu,除了安装现代版本的 cmake 之外,一切都非常顺利。搜索了一段时间后,可以在此处找到对我有用的方法:https://peshmerge.io/how-to-install-cmake-3-11-0-on-ubuntu-16-04/