audacity VS2010 工程搭建

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配置

https://v.youku.com/v_show/id_XMjYzMjg0NTg4.html?refer=seo_operation.liuxiao.liux_00003303_3000_Qzu6ve_19042900

首先编译 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

猜你喜欢

转载自blog.csdn.net/book_bbyuan/article/details/102951821