2012-04-10 1 views
0

Je tente de compiler Audacity 2.0.0 et je reçois l'erreur suivante. Je suis nouveau en C/C++ donc je ne sais pas comment le résoudre. J'utilise VS 2010 Professional SP1.Erreur lors de la compilation Les métadonnées d'élément Audacity MSB4023 ne peuvent pas être appliquées avec MSVC 2010

Erreur 449 erreur MSB4023: Impossible d'évaluer la métadonnée d'élément "% (Extension)". La métadonnée de l'élément "% (Extension)" ne peut pas être appliquée au chemin "" C: \ audacity-src-2.0.0 \ win \ Debug \ Audacity.vcxproj \ analyze.ny "". Caractères illégaux dans le chemin. C: \ audacity-src-2.0.0 \ win \ ny.targets 65 6 Audacity

Voici mon fichier ny.targets. J'ai fait quelques recherches sur googling, mais jusqu'ici cela a été inutile.

<?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> 

Répondre

1

Bien que je n'ai pas trouvé la racine de l'erreur, j'ai trouvé la solution de contournement.

La solution de contournement n'utilise pas VS2010 pour compiler Audacity.

Utilisez VS2008 — cela a fonctionné dès le départ à 2008.

Ce lien, http://wiki.audacityteam.org/wiki/Developing_On_Windows#What_about_Visual_Studio_2010.3F__Or_64-bit.3F, donne des instructions détaillées.

VC++ 2008 Express s'installe côte à côte avec 2010, pas de problème.

est ici le fil où ils tentent de le faire fonctionner avec 2010, http://forum.audacityteam.org/viewtopic.php?f=19&t=61946

4

Pour mémoire, votre problème est causé par les guillemets.

tour:

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

Dans

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

Comment vous faites cela dépendra de la façon dont vous l'entrée dans le passage.

1

L'astuce pour compiler le code actuel de Sourceforge dans VS2010 est de modifier le fichier ny.props à 1 place, et d'étendre les variables dans les étapes de pré-construction et de post-construction de portaudio-v19 et portmixer. Je ne peux pas sembler obtenir les variables d'environnement dans VS2010 à prendre comme utilisé ci-dessous, dans la solution actuelle. Les élargir semble avoir dépassé cela. Cependant, les variables prédéclarées comme la variable d'environnement du répertoire SDK fonctionnent correctement. En outre, le correctif unique pour les guillemets dans le fichier ny.props corrige toutes les cascades plus tard. Cela semble être le correctif minimal pour le compiler correctement.

Le correctif est ci-dessous:

ny.props d'origine:

<?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.accessoires fix:

<?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 pré-construction originale:

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 fix Pré-construction:

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 post-construction originale:

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 Post-construction 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 post-construction originale:

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-construction 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" 
0

Je n'ai pas assez réputation pour commenter la réponse de Tom Bonner, mais en utilisant cette information, j'ai trouvé la solution pour mon problème identique (avec une base de code différente) était de trouver le fichier .props dans le même répertoire que le fichier .targets, et avec le même nom (à savoir QtUIBuild.props et QtUIBuild.targets), et recherchez le chemin incriminé. Dans mon cas, il a été question de changer

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

à

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