官方文档automake
一、背景
简单说,就是,1991年cmake的作者为了避免写20多个不同系统的不同cmake,创建了兼容各种系统的autoconf、automake,这两个货能直接把c、c++文件等资源文件最终生成makefile,要是想具体了解automake的原理以及步骤,请自己查看automake官方文档(老外文档写的真好),github上好多源码都是直接生成好的configue,我们平时下载下来可直接用,./configure--->make就可以拿到相应的库了,但是最新的fdk-aac2.0.2稍微不大一样,可以分2种方式编译:
a、第一种方式见文章: windows cmake-gui 编译fdk-aac2.0.2_打野哥哥,救命的博客-CSDN博客
上述文章是通过CMakeLists.txt用cmake-gui 生成的vs相关的项目文件
b、第二种方式见本文:之所以要用automake,是因为fdk-aac2.0.2只给了automake生成makefile的部分文件,而没有直接给出可用的configue,所以需要根据automake官方文档手动生成一下
注意:fdk-aac其他版本,比如2.0.1,里面包含了Makefile.vc,这种直接用微软的nmake即可,网上一大把,自己去搜
二、思路
msys2可以简单理解成一个windows上模拟linux环境的平台,里面可以装inux下面像gcc、cmake这种库,然后在windows上通过msys2把编译器gcc切换成vs的cl.exe,然后结合上述生成的configue搞出windows支持的msvc的库,至于msvc与mingw的区别,自己去谷歌吧
三、准备
1、 MSYS2
a、官网下载MSYS2,且安装成功
b、在msys2中用pacman命令安装如下软件:
pacman -S nasm
pacman -S yasm
pacman -S make cmake
pacman -S autotools
注意:按照Autotools - MSYS2官网介绍安装autotools后就包含了autoconf、automake等自动工具
2、 修改msys2安装目录下的启动脚本msys2_shell.cmd,如下图所示
3、安装vs2022企业版,其他vs版本自己尝试
4、打开vs2022命令行工具,我编译的是64位的,32位的自己用x86工具,如下图:
四、编译
1、在vs的命令行工具里面,打开msys2目录下的msys2_shell.cmd,进入msys2的命令行,这样msys2就可以继承vs的环境变量了,就可以用vs的编译器cl.exe与链接器link.exe,具体见下图(这个 *** 作在ffmpeg的windows编译官方文档里有简单提到过)
2、开始用auto工具生成项目configue,下面的一堆命令就都是在msys2的命令行里面了
注意:如果遇到Error: ‘required file `./ltmain.sh' not found’错误,需要执行libtoolize,在执行automake那步,这个错误说明在automake官方文档的8.3.9.1
3、cl.exe+configure生成msvc库
a、上述2中生成的configure其实就是一个bash脚本,自己打开脚本或者用命令行./configure -h查看下脚本支持的命令,命令较多,我只截图一部分:
b、执行configure--->make二部曲生成64位msvc库,2个图如下:
c、生成的库默认放到fdk-aac目录里面的.libs 文件夹下,如下图:
注意:上述b中make后,如果执行make install命令,对应的.h、.lib、dll会拷贝到msys2目录下相应的文件夹下面,因为msys2是模拟了linux的环境,linux一切皆文件,自然有默认的头文件与库存贮路径,以上文章有任何纰漏,请指出,我在改~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)