2012-04-10 2 views
0

Audacity 2.0.0을 컴파일하려고하는데 다음 오류가 발생합니다. 나는 C/C++을 처음 사용하므로 문제를 해결하는 방법이 확실하지 않습니다. VS 2010 Professional SP1을 사용하고 있습니다.Audacity MSB4023 항목 메타 데이터를 컴파일하는 중 오류가 MSVC 2010에 적용될 수 없습니다.

오류 449 오류 MSB4023 : 항목 메타 데이터 "% (확장)"을 (를) 평가할 수 없습니다. C : \ audacity-src-2.0.0 \ win \ Debug \ Audacity.vcxproj \ analyze.ny ""경로에는 항목 메타 데이터 "% (Extension)"을 적용 할 수 없습니다. 경로에 잘못된 문자가 있습니다. C : \ audacity-src-2.0.0 \ win \ ny.targets 65 6 Audacity

다음은 내 ny.targets 파일입니다. 나는 인터넷 검색을 해왔지만, 지금까지는 효과가 없었다.

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemGroup> 
    <PropertyPageSchema 
     Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" /> 
    <AvailableItemName 
     Include="copy"> 
     <Targets>_copy</Targets> 
    </AvailableItemName> 
    </ItemGroup> 
    <UsingTask 
    TaskName="copy" 
    TaskFactory="XamlTaskFactory" 
    AssemblyName="Microsoft.Build.Tasks.v4.0"> 
    <Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task> 
    </UsingTask> 
    <Target 
    Name="_copy" 
    BeforeTargets="$(copyBeforeTargets)" 
    AfterTargets="$(copyAfterTargets)" 
    Condition="'@(copy)' != ''" 
    DependsOnTargets="$(copyDependsOn);ComputecopyOutput" 
    Outputs="@(copy-&gt;'%(Outputs)')" 
    Inputs="@(copy);%(copy.AdditionalDependencies);$(MSBuildProjectFile)"> 
    <ItemGroup 
     Condition="'@(SelectedFiles)' != ''"> 
     <copy 
     Remove="@(copy)" 
     Condition="'%(Identity)' != '@(SelectedFiles)'" /> 
    </ItemGroup> 
    <ItemGroup> 
     <copy_tlog 
     Include="%(copy.Outputs)" 
     Condition="'%(copy.Outputs)' != '' and '%(copy.ExcludedFromBuild)' != 'true'"> 
     <Source>@(copy, '|')</Source> 
     </copy_tlog> 
    </ItemGroup> 
    <Message 
     Importance="High" 
     Text="%(copy.ExecutionDescription)" /> 
    <WriteLinesToFile 
     Condition="'@(copy_tlog)' != '' and '%(copy_tlog.ExcludedFromBuild)' != 'true'" 
     File="$(IntDir)$(ProjectName).write.1.tlog" 
     Lines="^%(copy_tlog.Source);@(copy_tlog-&gt;'%(Fullpath)')" /> 
    <copy 
     Condition="'@(copy)' != '' and '%(copy.ExcludedFromBuild)' != 'true'" 
     CommandLineTemplate="%(copy.CommandLineTemplate)" 
     OutputName="%(copy.OutputName)" 
     AdditionalOptions="%(copy.AdditionalOptions)" 
     Inputs="@(copy)" /> 
    </Target> 
    <PropertyGroup> 
    <ComputeLinkInputsTargets> 
     $(ComputeLinkInputsTargets); 
     ComputecopyOutput; 
    </ComputeLinkInputsTargets> 
    <ComputeLibInputsTargets> 
     $(ComputeLibInputsTargets); 
     ComputecopyOutput; 
    </ComputeLibInputsTargets> 
    </PropertyGroup> 
    <Target 
    Name="ComputecopyOutput" 
    Condition="'@(copy)' != ''"> 
    <ItemGroup> 
     <copyDirsToMake 
     Condition="'@(copy)' != '' and '%(copy.ExcludedFromBuild)' != 'true'" 
     Include="%(copy.Outputs)" /> 
     <Link 
     Include="%(copyDirsToMake.Identity)" 
     Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" /> 
     <Lib 
     Include="%(copyDirsToMake.Identity)" 
     Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" /> 
     <ImpLib 
     Include="%(copyDirsToMake.Identity)" 
     Condition="'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'" /> 
    </ItemGroup> 
    <MakeDir 
     Directories="@(copyDirsToMake-&gt;'%(RootDir)%(Directory)')" /> 
    </Target> 
</Project> 

답변

1

오류의 근원을 파악하지 못했지만 해결 방법을 찾았습니다.

해결 방법은 VS2010을 사용하여 Audacity를 컴파일하지 않는 것입니다.

사용 VS2008 — 그것은 2008 년

이 링크, http://wiki.audacityteam.org/wiki/Developing_On_Windows#What_about_Visual_Studio_2010.3F__Or_64-bit.3F와 박쥐 권리 일, 자세한 지침을 제공합니다.

VC++ 2008 Express가 2010과 나란히 설치 되어도 문제가 없습니다. 여기

은 당신의 문제는 인용 부호에 의해 발생, 그들이 그것을 2010 작동하도록하려는 스레드, 기록을 위해 http://forum.audacityteam.org/viewtopic.php?f=19&t=61946

4

입니다.

켭니다

""C:\audacity-src-2.0.0\win\Debug\Audacity.vcxproj\analyze.ny"" 

"C:\audacity-src-2.0.0\win\Debug\Audacity.vcxproj\analyze.ny" 

속으로 당신이 당신이 입력에 전달하는 방법에 따라 달라집니다 어떻게.

1

VS2010의 Sourceforge에서 현재 코드를 컴파일하는 트릭은 ny.props 파일을 한 곳에서 수정하고 portaudio-v19 및 portmixer의 사전 빌드 및 포스트 빌드 단계에서 변수를 확장하는 것입니다. 현재 솔루션에서 VS2010의 환경 변수를 사용할 수없는 것 같습니다. 그들을 확장하는 것은 이것을 지나치는 것처럼 보입니다. 그러나 SDK 디렉토리 환경 변수와 같은 미리 선언 된 변수는 정상적으로 작동합니다.

또한 ny.props 파일의 따옴표에 대한 단일 수정으로 모든 계단식을 나중에 수정합니다. 이것은 컴파일을 제대로하기위한 최소한의 수정으로 보인다.

수정

이하이다

ny.props 일본어 :

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup 
    Condition="'$(copyBeforeTargets)' == '' and '$(copyAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'"> 
    <copyBeforeTargets>Midl</copyBeforeTargets> 
    <copyAfterTargets>CustomBuild</copyAfterTargets> 
    </PropertyGroup> 
    <PropertyGroup> 
    <copyDependsOn 
     Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(copyDependsOn)</copyDependsOn> 
    </PropertyGroup> 
    <ItemDefinitionGroup> 
    <copy> 
     <OutputName>"$(OutDir)$(ProjectFileName)\%(Filename)%(Extension)"</OutputName> 
     <CommandLineTemplate>copy /Y [inputs] %(OutputName)</CommandLineTemplate> 
     <Outputs>%(OutputName)</Outputs> 
     <ExecutionDescription>Copying %(Filename)</ExecutionDescription> 
    </copy> 
    </ItemDefinitionGroup> 
</Project> 

NY.소품 수정 :

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup 
    Condition="'$(copyBeforeTargets)' == '' and '$(copyAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'"> 
    <copyBeforeTargets>Midl</copyBeforeTargets> 
    <copyAfterTargets>CustomBuild</copyAfterTargets> 
    </PropertyGroup> 
    <PropertyGroup> 
    <copyDependsOn 
     Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(copyDependsOn)</copyDependsOn> 
    </PropertyGroup> 
    <ItemDefinitionGroup> 
    <copy> 
     <OutputName>$(OutDir)$(ProjectFileName)\%(Filename)%(Extension)</OutputName> 
     <CommandLineTemplate>copy /Y [inputs] "%(OutputName)"</CommandLineTemplate> 
     <Outputs>%(OutputName)</Outputs> 
     <ExecutionDescription>Copying %(Filename)</ExecutionDescription> 
    </copy> 
    </ItemDefinitionGroup> 
</Project> 

portaudio-V19 원래 사전 빌드 :

echo on 
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 1 >>%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% 

portaudio-V19 사전 빌드 수정 :

echo // Automatically generated file >"$(ProjectDir)/$(Configuration)/config.h" 
IF NOT "%DXSDK_DIR%" == "" echo #define PA_USE_DS 1 >>"$(ProjectDir)/$(Configuration)/config.h" 
IF NOT "%ASIOSDK_DIR%" == "" echo #define PA_USE_ASIO 1 >>"$(ProjectDir)/$(Configuration)/config.h" 
IF NOT "%JACKSDK_DIR%" == "" echo #define PA_USE_JACK 1 >>"$(ProjectDir)/$(Configuration)/config.h" 
IF NOT "%JACKSDK_DIR%" == "" echo #define PA_DYNAMIC_JACK 1 >>"$(ProjectDir)/$(Configuration)/config.h" 
rem echo #define PA_USE_WDMKS 1 >>"$(ProjectDir)/$(Configuration)/config.h" 
echo #define PA_USE_WASAPI 1 >>"$(ProjectDir)/$(Configuration)/config.h" 
echo #define PA_USE_WMME 1 >>"$(ProjectDir)/$(Configuration)/config.h" 

portaudio-V19 원래 빌드 후 :

echo on 
set BASE="../../../lib-src/portaudio-v19" 
set CFG=$(ProjectDir)$(Configuration)\config.h 
set INTDIR=$(Configuration) 
set CFLAGS=/O2 /GL /I "%BASE%/include" /I "%BASE%/src/common" /I "%BASE%/src/os/win" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"%INTDIR%/" /Fd"%INTDIR%" /W3 /nologo /c /wd4996 /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% 

portaudio-v19 포스트 빌드 fi X :

find "PA_USE_DS 1" "$(ProjectDir)$(Configuration)/config.h" 
IF ERRORLEVEL 1 goto NoDS 

cl /O2 /GL /I "../../../lib-src/portaudio-v19/include" /I "../../../lib-src/portaudio-v19/src/common" /I "../../../lib-src/portaudio-v19/src/os/win" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"$(IntDir)/" /Fd"$(IntDir)/" /W3 /nologo /c /wd4996 /FI "$(ProjectDir)$(Configuration)/config.h" /errorReport:prompt /I "%DXSDK_DIR%/include" "../../../lib-src/portaudio-v19/src/hostapi/dsound/pa_win_ds.c" 
cl /O2 /GL /I "../../../lib-src/portaudio-v19/include" /I "../../../lib-src/portaudio-v19/src/common" /I "../../../lib-src/portaudio-v19/src/os/win" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"$(IntDir)/" /Fd"$(IntDir)/" /W3 /nologo /c /wd4996 /FI "$(ProjectDir)$(Configuration)/config.h" /errorReport:prompt /I "%DXSDK_DIR%/include" "../../../lib-src/portaudio-v19/src/hostapi/dsound/pa_win_ds_dynlink.c" 

:NoDS 

find "PA_USE_WASAPI 1" "$(ProjectDir)$(Configuration)/config.h" 
IF ERRORLEVEL 1 goto NoWASAPI 

cl /O2 /GL /I "../../../lib-src/portaudio-v19/include" /I "../../../lib-src/portaudio-v19/src/common" /I "../../../lib-src/portaudio-v19/src/os/win" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"$(IntDir)/" /Fd"$(IntDir)/" /W3 /nologo /c /wd4996 /FI "$(ProjectDir)$(Configuration)/config.h" /errorReport:prompt "../../../lib-src/portaudio-v19/src/hostapi/wasapi/pa_win_wasapi.c" 

:NoWASAPI 

find "PA_USE_WDMKS 1" "$(ProjectDir)$(Configuration)/config.h" 
IF ERRORLEVEL 1 goto NoWDMKS 

cl %CFLAGS% "%BASE%/src/hostapi/wdmks/pa_win_wdmks.c" 

:NoWDMKS 

find "PA_USE_ASIO 1" "$(ProjectDir)$(Configuration)/config.h" 
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" "$(ProjectDir)$(Configuration)/config.h" 
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" "%DXSDK_DIR%/lib/x86/dxguid.lib" 


portmixer Post-Build original: 

set BASE="../../../lib-src/portmixer" 
set CFLAGS=/O2 /GL /I "%BASE%/../portaudio-v19/include" /I "%BASE%/include" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "PX_USE_WIN_MME" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"$(IntDir)" /Fd"$(IntDir)" /W3 /nologo /c /wd4996 /FI "$(ProjectDir)/$(Configuration)/config.h" /errorReport:prompt 

if "%DXSDK_DIR%"=="" goto NoDX 

cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/px_win_ds.c" 

set LIBS="%DXSDK_DIR%/lib/x86/dxguid.lib" 

:NoDX 

lib /OUT:"$(TargetPath)" "$(IntDir)*.obj" %LIBS% 


portmixer Post-Build fix: 

if "%DXSDK_DIR%"=="" goto NoDX 

cl /O2 /GL /I "../../../lib-src/portmixer/../portaudio-v19/include" /I "../../../lib-src/portmixer/include" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "PX_USE_WIN_MME" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"$(IntDir)/" /Fd"$(IntDir)/" /W3 /nologo /c /wd4996 /FI "$(ProjectDir)/$(Configuration)/config.h" /errorReport:prompt /I "%DXSDK_DIR%/include" "../../../lib-src/portmixer/src/px_win_ds.c" 

:NoDX 

lib /OUT:"$(TargetPath)" "$(IntDir)/*.obj" "%DXSDK_DIR%/lib/x86/dxguid.lib" 

portmixer 원래 빌드 후 :

set BASE="../../../lib-src/portmixer" 
set CFLAGS=/O2 /GL /I "%BASE%/../portaudio-v19/include" /I "%BASE%/include" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "PX_USE_WIN_MME" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"$(IntDir)" /Fd"$(IntDir)" /W3 /nologo /c /wd4996 /FI "$(ProjectDir)/$(Configuration)/config.h" /errorReport:prompt 

if "%DXSDK_DIR%"=="" goto NoDX 

cl %CFLAGS% /I "%DXSDK_DIR%/include" "%BASE%/src/px_win_ds.c" 

set LIBS="%DXSDK_DIR%/lib/x86/dxguid.lib" 

:NoDX 

lib /OUT:"$(TargetPath)" "$(IntDir)*.obj" %LIBS% 

portmixer 빌드 후 수정 :

if "%DXSDK_DIR%"=="" goto NoDX 

cl /O2 /GL /I "../../../lib-src/portmixer/../portaudio-v19/include" /I "../../../lib-src/portmixer/include" /D "WIN32" /D "NDEBUG" /D "_LIB" /D "PX_USE_WIN_MME" /D "_MBCS" /GF /FD /EHsc /MD /Gy /Fo"$(IntDir)/" /Fd"$(IntDir)/" /W3 /nologo /c /wd4996 /FI "$(ProjectDir)/$(Configuration)/config.h" /errorReport:prompt /I "%DXSDK_DIR%/include" "../../../lib-src/portmixer/src/px_win_ds.c" 

:NoDX 

lib /OUT:"$(TargetPath)" "$(IntDir)/*.obj" "%DXSDK_DIR%/lib/x86/dxguid.lib" 
0

나는 톰 보너의 대답에 의견을 충분히 명성을 가지고 있지 않지만 그 정보를 사용하여 다른 코드베이스를 가진 동일한 문제에 대한 해결책이 .targets 파일과 동일한 디렉토리에서 .props 파일을 찾고 동일한 이름 (즉, QtUIBuild.props 및 QtUIBuild.targets)를 열고 잘못된 경로를 찾습니다. 내 경우는

<Outputs>.\..\..\source\qt\GeneratedFiles\ui_%(Filename).h</Outputs> 

<Outputs>".\..\..\source\qt\GeneratedFiles\ui_%(Filename).h"</Outputs> 

을 변경하는 문제였다

관련 문제