如何解决执行FPGA poject-Vivado的Makefile问题
嗨,我是创建makefile的新手。 我在makefile文件中编写了以下命令,但是当我在终端中键入make时,它们似乎未执行。 但是,如果我在终端中单独键入命令,它将起作用。
我正在尝试在此tcl文件中打开一个vivado项目,并对它进行一些望远镜分析,并将结果保存到txt文件中。如果单独执行,tcl文件也可以正常运行。 我CD到我的项目文件夹,其中存在所有文件-源文件夹,项目文件夹,makefile。我将其命名为“ makefile”,以便可以在终端中键入make来执行它。makefile的内容如下。
.PHONY : vivado_open
vivado_open:
$(info Hello Make)
bsub -Is -q i_soc_rh7 -R "rusage[mem=32000,temp=1GB] affinity[core(8):membind=localonly]" vivado -nolog -nojou -mode batch -source vivado.tcl
这是终端的结果
$make
Hello Make
make: Nothing to be done for `vivado_open'.
解决方法
对不起,但是这里还有其他事情,您还没有告诉我们。如果您使用该makefile键入System.env['GIT_COMMIT].substring(0,4)
,则根本无法获得该输出。
您使用的是变量,而不是名为make
的目标,因此make不会打印不会对'vivado_open'进行打印。而是类似: ../ projectfiles / test.prj
此外,您没有回答我有关TAB与空格的问题。如果vivado_open
和info
行都用TAB缩进,则没有也打印bsub
的方法,make将无法打印Hello Make
。命令并尝试运行它。
您的目录中必须有另一个Makefile,该文件可能名为bsub
或Makefile
,而不是GNUmakefile
。或者,也许您设置了makefile
这样的环境变量,导致其他makefile文件被读取。
如果所有这些都不是真的,则必须运行MAKEFILES
,看看是否可以确定正在发生的事情。该输出太大,无法发布到StackOverflow,因此您必须尝试自己阅读。
已编辑
好的,问题在于您使用空格来缩进规则。在制作中,所有配方行都必须使用硬TAB字符缩进。普通空间并不意味着要做任何特别的事情。基本上,您的makefile会被解释为就像您编写此代码一样:
make -d
这就是为什么您收到此消息“什么都没做”的原因:您实际上没有为.PHONY : vivado_open
vivado_open:
$(info Hello Make)
bsub -Is -q i_soc_rh7 -R "rusage[mem=32000,temp=1GB] affinity[core(8):membind=localonly]" vivado -nolog -nojou -mode batch -source vivado.tcl
定义配方,因此实际上没有什么可做以更新该目标。
顺便说一句,通常您会在vivaldo_open
行中遇到语法错误,因为make不知道那是什么。但是,如果仔细查看您的行,您会发现它包含一个bsub
。因此,make将其解释为一组目标和一组先决条件,例如:
:
(make不关心引号或其他bsub ... affinity[core(8) : membind=localonly]" vivado ... vivado.tcl
等特殊字符。)
所以。确保使用TAB字符缩进食谱行,并且会没事的。这可能是人们使用makefile遇到的最常见的单个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。