audacity的 VS2015工程网上已经有了,https://blog.csdn.net/weixin_34224941/article/details/93950373
按照这个instructions就可以搭建一个比较稳定的vs2015(vs2017)的版本
我这里主要是怀旧,用旧版本的vs2010 搭建一个轻量级的audacity工程供调试使用
audacity的编译需要wxWidgets,而且不同版本的audacity依赖不同的wxWidgets
在audacity工程下的,\Audacity_x_x_x\win\下面有一个 audacity.sln 给出了可以供vs编译的sln文件,另外去查audacity工程包下面的configure文件,得到所依赖的wxWidgets的版本号,比如打开的一个configure文件
audacity 2.2.0 VS 2013 wxWidgets v3.0.x
audacity 2.2.0-rc1 VS 2013 wxWidgets v3.0.x
audacity 2.1.3 vs2013 wxWidgets v3.0.x
audacity 2.1.0 vs2013 (这中间没有过渡版本) wxWidgets is 2.8.x
audacity 2.0.6 vs208 wxWidgets is 2.8.x
audacity 2.0.2 vs2008 wxWidgets is 2.8.x
audacity 2.0.0 vs208 wxWidgets is 2.8.x
现在github上托管audacity工程,
你没看错,0.6和1.0之间没有过渡版本 ,而且也没有官方给你的好的vs2010的sln文件
说白了,想用 vs2010 的话,audacity 2.0.6 和 audacity 2.1.0 vs2013 这两个应该是最好的选择,另外它依赖的wx是2.8.x
一、wxX11-2.8.12配置
首先编译 wxWidgets 2.8.12, 从网上找到包,把 build\msw 下面的 config.vc 打开
把 SHARED 改为1,UNICODE改为1
主要是audacity使用的是unicode代码,我们得配合一下
nmake -f config.vc
在 lib\vc_dll 下就会生成动态库
设定一个环境变量:WXWIN,定位到你的 wxX11-2.8.12 的目录
二、audacity的配置
下载2.0.6的包,用vs2010打开sln文件,编译,大部分工程都没有问题,只有下面四个是不行的
Audacity(主工程)
locale
lv2
portaudio-v19
没啥好说的了,各个击破吧!顽张れ!
1、portaudio-v19
看问题是它是需要在 下面这个目录下面生成一个config.h供调用
实际就是check你系统有没有安装下面的音频库或者用哪个驱动,现在拿一个config.h 打开看看(这是后话了)
没生成肯定是遇到什么阻碍了
我不编译ASIO了,需要ASIO的,看文档:
https://manual.audacityteam.org/man/asio_audio_interface.html
https://forum.audacityteam.org/viewtopic.php?t=95663
稍微改一下:
PreBuildEvent
echo on
setlocal enabledelayedexpansion
set CFG="$(ProjectDir)/$(Configuration)/config.h"
echo // Automatically generated file >!CFG!
IF NOT "%DXSDK_DIR%" == "" echo #define PA_USE_DS 1 >>!CFG!
IF NOT "%ASIOSDK_DIR%" == "" echo #define PA_USE_ASIO 0 >>!CFG!
IF NOT "%JACKSDK_DIR%" == "" echo #define PA_USE_JACK 1 >>!CFG!
IF NOT "%JACKSDK_DIR%" == "" echo #define PA_DYNAMIC_JACK 1 >>!CFG!
rem echo #define PA_USE_WDMKS 1 >>!CFG!
echo #define PA_USE_WASAPI 1 >>!CFG!
echo #define PA_USE_WMME 1 >>!CFG!
PostBuildEvent
echo on
setlocal enabledelayedexpansion
set BASE=../../../lib-src/portaudio-v19
set CFG=$(ProjectDir)$(Configuration)\config.h
set INTDIR=$(Configuration)
set CFLAGS=/Od /I "!BASE!/include" /I "!BASE!/src/common" /I "!BASE!/src/os/win" /D "WIN32" /D "_DEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /RTC1 /MDd /Gy /W3 /nologo /c /ZI /wd4996 /Fo"!INTDIR!/" /FI "!CFG!" /errorReport:prompt
set LIBS=
find "PA_USE_DS 1" "!CFG!"
IF ERRORLEVEL 1 goto NoDS
cl !CFLAGS! /I "%DXSDK_DIR%/include" "!BASE!/src/hostapi/dsound/pa_win_ds.c"
cl !CFLAGS! /I "%DXSDK_DIR%/include" "!BASE!/src/hostapi/dsound/pa_win_ds_dynlink.c"
set LIBS="%DXSDK_DIR%/lib/x86\dxguid.lib"
:NoDS
find "PA_USE_WASAPI 1" "!CFG!"
IF ERRORLEVEL 1 goto NoWASAPI
cl !CFLAGS! "!BASE!/src/hostapi/wasapi/pa_win_wasapi.c"
:NoWASAPI
find "PA_USE_WDMKS 1" "!CFG!"
IF ERRORLEVEL 1 goto NoWDMKS
cl !CFLAGS! "!BASE!/src/hostapi/wdmks/pa_win_wdmks.c"
:NoWDMKS
find "PA_USE_ASIO 1" "!CFG!"
IF ERRORLEVEL 1 goto NoASIO
cl !CFLAGS! /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "!BASE!/src/hostapi/asio/pa_asio.cpp"
cl !CFLAGS! /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "!BASE!/src/hostapi/asio/iasiothiscallresolver.cpp"
cl !CFLAGS! /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/common/asio.cpp"
cl !CFLAGS! /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/asiodrivers.cpp"
cl !CFLAGS! /I "%ASIOSDK_DIR%/common" /I "%ASIOSDK_DIR%/host" /I "%ASIOSDK_DIR%/host/pc" "%ASIOSDK_DIR%/host/pc/asiolist.cpp"
:NoASIO
find "PA_USE_JACK 1" "!CFG!" >NUL
IF ERRORLEVEL 1 goto NoJACK
cl !CFLAGS! /I "%JACKSDK_DIR%/includes" "!BASE!/src/hostapi/jack/pa_jack.c"
cl !CFLAGS! /I "%JACKSDK_DIR%/includes" "!BASE!/src/hostapi/jack/pa_jack_dynload.c"
:NoJACK
lib /OUT:"$(TargetPath)" "!INTDIR!/*.obj" !LIBS!
走起style!
成功编译,好!老中医专治疑难杂症!
2、lv2
貌似是一些基本的宏定义没有正确定义
直接用vs2010自带的吧,不折腾了
把lv2目录中的stdint.h给隐掉吧!
好的!,一颗子弹消灭一个敌人
3、locale
原来是需要msgfmt啊 ,去
http://gnuwin32.sourceforge.net/packages/gettext.htm
下载 gettext-0.14.4-bin.zip
把所需文件给他补齐
libiconv2网上找一个就行
放置到合适的位置
编译走起!行,帽子戏法了!
4、大工程,audacity
我们的目标是把下面的双引号去掉!
这地方你改 vcxproject(Audacity.vcxproj)没有用,尝试的半天,这是个烟雾弹
要动的文件是ny.props ,改成,把双引号去掉
再次编译,貌似有符号出现什么问题
这就不用多说了,这个问题在人 https://blog.csdn.net/weixin_34224941/article/details/93950373提到过
肯定是双引号了,再来一次吧 rebuild all
好嘛,过五关斩六将!
只是要把 \wxX11-2.8.12\lib\vc_dll 下的 wxbase28ud_xxx_dll 各种,拷贝到 debug目录下
好了,是时候享受你的劳动成果的时候了,毕竟是熟悉的味道!
行吧,闲言碎语莫再提,直接来干货:
链接: https://pan.baidu.com/s/10BAnN-woGORTVJ6u9yXd1w
提取码: du3b