由于错误条件,构建目标被跳过;("@(条件名称此处)" - 不确定如何更改
Build target skipped, due to false condition; ('@(ConditionNameHere)' - unsure how to change
初始免责声明:我在Visual Studio中使用C++的经验有限,所以请注意:)
我正试图在我的项目(VS2013)中使用Flex/Bison的Windows端口,但在遵循指导添加了构建自定义之后(http://sourceforge.net/p/winflexbison/wiki/Visual%20Studio%20custom%20build%20rules/),它不符合条件并且不执行:
Target "BisonTarget" skipped, due to false condition; ('@(Bison)' != '') was evaluated as ('' != '').
Target "FlexTarget" skipped, due to false condition; ('@(Flex)' != '') was evaluated as ('' != '').
显然,这只是基于一些构建/环境变量而失败的,然而,在谷歌上搜索了很长时间后,我实际上无法弄清楚@(NameHere)变量的设置位置,因此我可以强制构建。
有人能告诉我在哪里/如何更改这些变量以执行新的构建文件吗?
-
确保flex.exe和bison.exe在您的PATH中(将它们添加到%PATH%)。我的
PATH=%PATH%;C:ColaGnuWin32bin
(修复PATH后,需要重新启动Visual Studio) -
确保
GNU Tools.targets
或(无论文件名如何)列在自定义生成规则中。在VisualStudio中,这是一个全局设置,因此所有解析器项目只需要它一次。如果没有,右键单击项目并选择"生成自定义项",然后单击"查找现有…"。。。并浏览到.targets文件。 -
右键单击您的Bison和Flex源文件(.y/.ypp或.l),然后从
Item Type
中选择适当的文件类型,它应该与您刚才添加的目标相关。Item Type
的下拉列表中应该有Flex和Bison这样的值。
关于('@(Flex)' != '')
据我所知,这是一个MSBuild条件,它正在评估变量是否为空。如果它不为空,则Condition为true,并将执行Target。
例如,对于上下文,我的.targets文件有:
<Target
Name="_Bison"
BeforeTargets="$(BisonBeforeTargets)"
AfterTargets="$(BisonAfterTargets)"
Condition="'@(Bison)' != ''"
由库开发人员建议https://sourceforge.net/p/winflexbison/discussion/general/thread/18a9d465/?limit=50
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 不确定如何装饰我的C++库代码以在 C 中使用
- C++功能泄漏内存,我是C++新手,不确定如何解决
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 代码在 CodeSignal 中工作不正确。不确定这是否是我的代码缺陷
- 为什么以下代码是不确定的?
- 更改不同类的数组中的值
- 编译错误:"lvalue required as left operand of assignment" 不确定原因
- 误用指针会产生分段错误。我仍然不确定如何纠正它
- 我不确定为什么代码没有运行,它在编译时抛出错误,说它无法找到 PrintArray()
- 不确定出了什么问题(字符串输入)
- 自定义构建文件更改不会触发VS 2017中的项目重建
- C++睡眠时间不确定
- 在C++中做一个场景问题,我不确定如何处理布尔和if循环
- 代码输出随机符号,我不确定出了什么问题
- 可变值变化,不确定原因
- 有没有办法让C++从 cin 中接收不确定数量的字符串?
- 更改对象并将其在同一表达式中使用它是不确定的行为,但是子表达式由逗号运算符分开
- 什么是C++中的不确定行为?它与未定义的行为有何不同
- 由于错误条件,构建目标被跳过;("@(条件名称此处)" - 不确定如何更改