0

我正在尝试编译 Audacity 2.0.0 并收到以下错误。我是 C/C++ 新手,所以不确定如何解决它。我正在使用 VS 2010 Professional SP1。

错误 449 错误 MSB4023:无法评估项目元数据“%(Extension)”。项目元数据“%(Extension)”无法应用于路径“C:\audacity-src-2.0.0\win\Debug\Audacity.vcxproj\analyze.ny”。路径中的非法字符。C:\audacity-src-2.0.0\win\ny.targets 65 6 大胆

这是我的 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>
4

4 回答 4

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"

你如何做到这一点取决于你如何传递输入。

于 2013-06-25T14:57:49.563 回答
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

于 2012-04-10T23:32:16.513 回答
1

在 VS2010 中从 Sourceforge 编译最新代码的技巧是在 1 处修改 ny.props 文件,并在 portaudio-v19 和 portmixer 的 Pre-Build 和 Post-Build 步骤中扩展变量。在当前的解决方案中,我似乎无法让 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.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>

portaudio-v19 Pre-Build 原版:

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 构建后修复:

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 原版:

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"
于 2013-08-01T02:52:06.107 回答
0

我没有足够的声誉来评论 Tom Bonner 的回答,但是使用该信息,我发现我的相同问题(使用不同的代码库)的解决方案是在与 .targets 文件相同的目录中找到 .props 文件,并具有相同的名称(即 QtUIBuild.props 和 QtUIBuild.targets),并查找有问题的路径。就我而言,这是一个改变的问题

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

<Outputs>.\..\..\source\qt\GeneratedFiles\ui_%(Filename).h</Outputs>
于 2014-12-23T02:04:58.973 回答