C++ 使用Bash在Windows 10上使用Visual Studio 2015构建libvpx

C++ 使用Bash在Windows 10上使用Visual Studio 2015构建libvpx,c++,visual-studio-2015,libvpx,makefile-project,C++,Visual Studio 2015,Libvpx,Makefile Project,我在libvpx中发现了一个bug,它阻碍了我在视频中使用alpha。我已经修复了这个bug,但这意味着我必须重新构建libvpx(之前的构建在时间的迷雾中丢失,除了头和库)。我已经获取了1.6.1版,并按照此处的说明,在Windows 10上的Bash中使用以下命令行生成Visual Studio 2015解决方案: configure --target=x86_64-win64-vs14 --as=auto --enable-vp9-highbitdepth --enable-vp8 --e

我在libvpx中发现了一个bug,它阻碍了我在视频中使用alpha。我已经修复了这个bug,但这意味着我必须重新构建libvpx(之前的构建在时间的迷雾中丢失,除了头和库)。我已经获取了1.6.1版,并按照此处的说明,在Windows 10上的Bash中使用以下命令行生成Visual Studio 2015解决方案:

configure --target=x86_64-win64-vs14 --as=auto --enable-vp9-highbitdepth --enable-vp8 --enable-vp9 --enable-error-concealment --enable-runtime-cpu-detect --enable-libyuv
一切看起来都很好:我在Visual Studio 2015中打开了解决方案,并尝试构建vpx项目,该项目产生了许多对象文件和组装的程序集源,但最终我遇到以下错误:

LINK : fatal error LNK1181: cannot open input file 'x64\Debug\vpx\vpx_ports_emms_asm.obj'
没有具有此名称的源文件,因此没有相应的obj文件。纵观整个项目,有许多.mk文件,其中一个文件名为vpx_ports,包含以下文本:

PORTS_SRCS-yes += vpx_ports.mk

PORTS_SRCS-yes += bitops.h
PORTS_SRCS-yes += mem.h
PORTS_SRCS-yes += msvc.h
PORTS_SRCS-yes += system_state.h
PORTS_SRCS-yes += vpx_timer.h

ifeq ($(ARCH_X86)$(ARCH_X86_64),yes)
PORTS_SRCS-yes += emms.asm
PORTS_SRCS-yes += x86.h
PORTS_SRCS-yes += x86_abi_support.asm
endif

PORTS_SRCS-$(ARCH_ARM) += arm_cpudetect.c
PORTS_SRCS-$(ARCH_ARM) += arm.h
在我看来,这就像某种我不熟悉的makefile向导。项目中没有其他vpx_端口文件。项目中还有其他几个.mk文件

建议使用Cygwin,我尝试在Windows上使用Cygwin而不是Bash,但获得了相同的结果。最终,我想修复这个bug,继续我的生活。欢迎提供任何帮助,无论是向我解释如何解决链接器错误,还是建议其他构建机制

[编辑1]
进度:构建脚本为asm文件创建自定义构建命令,例如

yasm -Xvc -g cv8 -f win64  -I"." -I".." "%(FullPath)" -o $(IntDir)vpx_ports_emms_asm.obj

但是,-o在最新版本的yasm中指定输出目录,而不是输出文件名(不管文档怎么说);该文件确实已成功组装到emms.obj。遗憾的是,似乎没有指定输出文件名的选项。

结果是我安装了错误的YASM。在webmproject站点上,构建先决条件警告不要使用VS集成版。

我已经设法使用mingw64+yasm 1.3+msys 1.0构建了它。在生成VS解决方案时,基于Autotools的构建系统通常比cmake更糟糕。