Win flex-bison 在 Visual Studio 2015 时总是 returns 1 但在 运行 手动时工作
Win flex-bison always returns 1 when inside Visual Studio 2015 but works when run manually
我安装了与 VS 集成的 Win flex-bison。这允许项目包含 .l 和 .y 文件。
问题是当我尝试用 VS 编译时我得到
1>------ Build started: Project: pasms64, Configuration: Release Win32 ------
1> Process "pasm64.l" flex file
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Addins\win_flex_bison-latest\custom_build_rules\win_flex_bison_custom_build.targets(129,5): error MSB3721: The command "call win_flex.exe --outfile="pasm64.flex.c" --wincompat --noline "pasm64.l"" exited with code 1.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
当我从命令行手动 运行 时,它工作正常。
C:\Users\jaret\OneDrive\Desktop\Pet\Pasm\pasm64>cd C:\Users\jaret\OneDrive\Desktop\Pet\Pasm\pasm64
C:\Users\jaret\OneDrive\Desktop\Pet\Pasm\pasm64>call win_flex.exe --outfile="pasm64.flex.c" --wincompat --noline "pasm64.l"
C:\Users\jaret\OneDrive\Desktop\Pet\Pasm\pasm64>
VS 的道具文件
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup
Condition="'$(BisonBeforeTargets)' == '' and '$(BisonAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
<BisonBeforeTargets>Midl</BisonBeforeTargets>
<BisonAfterTargets>CustomBuild</BisonAfterTargets>
</PropertyGroup>
<PropertyGroup>
<BisonDependsOn
Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(BisonDependsOn)</BisonDependsOn>
</PropertyGroup>
<ItemDefinitionGroup>
<Bison>
<OutputFile>%(Filename).tab.cpp</OutputFile>
<DefinesFile>%(Filename).tab.h</DefinesFile>
<CommandLineTemplate>call win_bison.exe [AllOptions] [AdditionalOptions] "%(Filename)%(Extension)"</CommandLineTemplate>
<Outputs>%(RootDir)%(Directory)%(OutputFile);</Outputs>
<ExecutionDescription>Process "%(Filename)%(Extension)" bison file</ExecutionDescription>
</Bison>
</ItemDefinitionGroup>
<PropertyGroup
Condition="'$(FlexBeforeTargets)' == '' and '$(FlexAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
<FlexBeforeTargets>Midl</FlexBeforeTargets>
<FlexAfterTargets>CustomBuild</FlexAfterTargets>
</PropertyGroup>
<PropertyGroup>
<FlexDependsOn
Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(FlexDependsOn)</FlexDependsOn>
</PropertyGroup>
<ItemDefinitionGroup>
<Flex>
<OutputFile>%(Filename).flex.cpp</OutputFile>
<Wincompat>true</Wincompat>
<CommandLineTemplate>call win_flex.exe [AllOptions] [AdditionalOptions] "%(Filename)%(Extension)"</CommandLineTemplate>
<Outputs>%(RootDir)%(Directory)%(OutputFile);</Outputs>
<ExecutionDescription>Process "%(Filename)%(Extension)" flex file</ExecutionDescription>
</Flex>
</ItemDefinitionGroup>
</Project>
我的问题是为什么当 运行 来自 props 文件时这不起作用。
我能做些什么来解决这个问题吗?
问题是路径问题。我通过使用自定义构建步骤解决了这个问题。当我为文件使用完整路径时,它按预期工作。没有什么比无声的失败更糟糕的了,
我安装了与 VS 集成的 Win flex-bison。这允许项目包含 .l 和 .y 文件。 问题是当我尝试用 VS 编译时我得到
1>------ Build started: Project: pasms64, Configuration: Release Win32 ------
1> Process "pasm64.l" flex file
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Addins\win_flex_bison-latest\custom_build_rules\win_flex_bison_custom_build.targets(129,5): error MSB3721: The command "call win_flex.exe --outfile="pasm64.flex.c" --wincompat --noline "pasm64.l"" exited with code 1.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
当我从命令行手动 运行 时,它工作正常。
C:\Users\jaret\OneDrive\Desktop\Pet\Pasm\pasm64>cd C:\Users\jaret\OneDrive\Desktop\Pet\Pasm\pasm64
C:\Users\jaret\OneDrive\Desktop\Pet\Pasm\pasm64>call win_flex.exe --outfile="pasm64.flex.c" --wincompat --noline "pasm64.l"
C:\Users\jaret\OneDrive\Desktop\Pet\Pasm\pasm64>
VS 的道具文件
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup
Condition="'$(BisonBeforeTargets)' == '' and '$(BisonAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
<BisonBeforeTargets>Midl</BisonBeforeTargets>
<BisonAfterTargets>CustomBuild</BisonAfterTargets>
</PropertyGroup>
<PropertyGroup>
<BisonDependsOn
Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(BisonDependsOn)</BisonDependsOn>
</PropertyGroup>
<ItemDefinitionGroup>
<Bison>
<OutputFile>%(Filename).tab.cpp</OutputFile>
<DefinesFile>%(Filename).tab.h</DefinesFile>
<CommandLineTemplate>call win_bison.exe [AllOptions] [AdditionalOptions] "%(Filename)%(Extension)"</CommandLineTemplate>
<Outputs>%(RootDir)%(Directory)%(OutputFile);</Outputs>
<ExecutionDescription>Process "%(Filename)%(Extension)" bison file</ExecutionDescription>
</Bison>
</ItemDefinitionGroup>
<PropertyGroup
Condition="'$(FlexBeforeTargets)' == '' and '$(FlexAfterTargets)' == '' and '$(ConfigurationType)' != 'Makefile'">
<FlexBeforeTargets>Midl</FlexBeforeTargets>
<FlexAfterTargets>CustomBuild</FlexAfterTargets>
</PropertyGroup>
<PropertyGroup>
<FlexDependsOn
Condition="'$(ConfigurationType)' != 'Makefile'">_SelectedFiles;$(FlexDependsOn)</FlexDependsOn>
</PropertyGroup>
<ItemDefinitionGroup>
<Flex>
<OutputFile>%(Filename).flex.cpp</OutputFile>
<Wincompat>true</Wincompat>
<CommandLineTemplate>call win_flex.exe [AllOptions] [AdditionalOptions] "%(Filename)%(Extension)"</CommandLineTemplate>
<Outputs>%(RootDir)%(Directory)%(OutputFile);</Outputs>
<ExecutionDescription>Process "%(Filename)%(Extension)" flex file</ExecutionDescription>
</Flex>
</ItemDefinitionGroup>
</Project>
我的问题是为什么当 运行 来自 props 文件时这不起作用。 我能做些什么来解决这个问题吗?
问题是路径问题。我通过使用自定义构建步骤解决了这个问题。当我为文件使用完整路径时,它按预期工作。没有什么比无声的失败更糟糕的了,