2012-04-10 20 views
0

Ich versuche Audacity 2.0.0 zu kompilieren und erhalte den folgenden Fehler. Ich bin neu in C/C++, also bin ich mir nicht sicher, wie ich es beheben kann. Ich verwende VS 2010 Professional SP1.Fehler beim Kompilieren von Audacity MSB4023 Elementmetadaten können nicht mit MSVC 2010 angewendet werden

Fehler 449 Fehler MSB4023: Die Elementmetadaten "% (Erweiterung)" kann nicht ausgewertet werden. Die Elementmetadaten "% (Erweiterung)" können nicht auf den Pfad "" C: \ audacity-src-2.0.0 \ win \ Debug \ Audacity.vcxproj \ analyze.ny "" angewendet werden. Illegale Zeichen im Pfad. C: \ audacity-src-2.0.0 \ win \ ny.targets 65 6 Audacity

Hier ist meine ny.targets-Datei. Ich habe etwas gegoogelt, aber bisher war es fruchtlos.

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

Antwort

1

Während ich die Wurzel des Fehlers nicht herausgefunden habe, habe ich die Problemumgehung gefunden.

Die Problemumgehung ist, verwenden Sie nicht VS2010, um Audacity zu kompilieren.

Verwenden VS2008 — es rechts von der Fledermaus arbeitete mit 2008

Dieser Link, http://wiki.audacityteam.org/wiki/Developing_On_Windows#What_about_Visual_Studio_2010.3F__Or_64-bit.3F, gibt detaillierte Anweisungen.

VC++ 2008 Express installiert Seite an Seite mit 2010, keine Probleme. Hier

ist der rote Faden, wo sie zu bekommen versuchen, es mit 2010 zu arbeiten, http://forum.audacityteam.org/viewtopic.php?f=19&t=61946

4

Für das Protokoll, Ihr Problem wird durch die Anführungszeichen verursacht.

Turn:

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

In

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

Wie Sie das tun wird davon abhängen, wie Sie in der Eingabe vorbei sind.

1

Der Trick, den sehr aktuellen Code von Sourceforge in VS2010 zu kompilieren, ist das Ändern der ny.props-Datei an einem Ort und das Erweitern der Variablen in den Schritten pre-Build und Post-Build von portaudio-v19 und portmixer. Ich kann nicht scheinen, die Umgebungsvariablen in VS2010 zu nehmen, wie unten in der gegenwärtigen Lösung verwendet zu werden. Sie zu erweitern, scheint darüber hinauszukommen. Vordeklarierte Variablen wie die SDK-Verzeichnisumgebungsvariablen funktionieren jedoch einwandfrei.

Auch die einzige Lösung für die Zitate in der Datei ny.props behebt alle Kaskaden später. Dies scheint der minimale Fix zu sein, um es richtig kompilieren zu lassen.

Das Update ist unter:

ny.props original:

<?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.Requisiten 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 Pre-Build-original:

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 Pre-Build-fix:

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-Build-original:

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-Build 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-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 Postbuild 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

ich Antwort nicht genug Ruf auf Tom Bonner Kommentar, aber Unter Verwendung dieser Informationen fand ich die Lösung für mein identisches Problem (mit einer anderen Codebasis), die .props-Datei im selben Verzeichnis wie die .targets-Datei zu finden und mit demselben Namen (d. h QtUIBuild.props und QtUIBuild.targets) und suchen Sie nach dem fehlerhaften Pfad. In meinem Fall war es eine Frage der

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

zu

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