在Windows 10上使用Bash,在Visual Studio 2015中构建libvpx

3
我在libvpx中发现了一个bug,这妨碍了我在视频中使用alpha。我已经修复了这个bug,但这意味着我必须重新构建libvpx(前一个构建已经失去了除头文件和库之外的所有东西)。我获取了1.6.1版本并按照这里的说明https://github.com/webmproject/libvpx,在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_ports_*文件,但是有几个其他的.mk文件。
建议使用Cygwin,我尝试使用它而不是Windows Bash,但结果相同。最终,我想修复这个错误并继续我的生活。欢迎任何帮助,无论是解释如何解决链接器错误还是提供替代的构建机制。
[编辑1]
进展:构建脚本为asm文件创建自定义构建命令,例如:
yasm -Xvc -g cv8 -f win64  -I"." -I".." "%(FullPath)" -o $(IntDir)vpx_ports_emms_asm.obj

然而,在最新版本的yasm中,-o指定的是输出目录而不是输出文件名(尽管文档可能会说相反),该文件确实被成功地组装为emms.obj。可悲的是,似乎没有选项来指定输出文件名。

我已经成功使用mingw64 + yasm 1.3 + msys 1.0构建了它。基于Autotools的构建系统在生成VS解决方案时通常比cmake还要糟糕。 - user7860670
1个回答

4
原来我安装了错误的YASM。在webmproject网站上,构建先决条件警告不要使用VS集成版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接