Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在eclipse(stm32工作台)中通过shellscript定义编译器符号_C_Eclipse_Shell_Symbols_Stm32 - Fatal编程技术网

在eclipse(stm32工作台)中通过shellscript定义编译器符号

在eclipse(stm32工作台)中通过shellscript定义编译器符号,c,eclipse,shell,symbols,stm32,C,Eclipse,Shell,Symbols,Stm32,由于时间较长,我为stm32f4处理器的嵌入式系统编写软件 直到现在,我使用自己的工具链和自己的makefile构建二进制文件。为了利用IDE的优势,我决定将该项目集成到Eclipse中(stm32工作台:针对stm32控制器的Eclipse)。为了停止拥有自己的工具链,我现在使用集成的AC6工具链 我要做的大部分事情都很顺利 我的问题 在我自己的makefile中,我有以下条目: SVNREPREV := $(shell ./svnversion.sh ./inc/ ./Drivers/ ./

由于时间较长,我为
stm32f4
处理器的嵌入式系统编写软件

直到现在,我使用自己的工具链和自己的makefile构建二进制文件。为了利用IDE的优势,我决定将该项目集成到Eclipse中(stm32工作台:针对stm32控制器的Eclipse)。为了停止拥有自己的工具链,我现在使用集成的AC6工具链

我要做的大部分事情都很顺利

我的问题

在我自己的makefile中,我有以下条目:

SVNREPREV := $(shell ./svnversion.sh ./inc/ ./Drivers/ ./libs/ ./linkerscripts/ ./makefsdata/ ./src/)
XCFLAGS += -DSVNREPOVERSION=\"$(SVNREPREV)\"
(shell脚本返回一个类似->1234:1234M的值,并将其转换为字符串)

我可以在我的c代码中使用此值,如下所示:

const char svnRepoRevision[] = SVNREPOVERSION;
我的问题

如何使用AC6工具链和创建的makefiles在Eclipse/stm32 workbench中实现类似的行为

我的尝试

在项目->属性->C/C++构建->设置->构建步骤->符号下添加符号

SVNREPREV=$(shell ../svnversion.sh ../inc/ ../Drivers/ ../libs/ ../linkerscripts/ ../makefsdata/ ../src/)
SVNREPOVERSION="SVNREPREV"
生成以以下错误结束:

arm-none-eabi-gcc: error: ../src/): No such file or directory
我尝试了设置“”的不同版本,但没有效果,总是收到一个错误


任何帮助都将不胜感激。

手册

链接到已使用的文档:

谢谢你给我看这个链接

解决方案/答案

  • 在项目根文件夹中创建空makefile.defs文件
  • 右键单击项目根文件夹->新建->文件

  • 在makefile.defs中写入svn修订所需的命令
  • SVNREV:='“$(shell../svnversion.sh../inc/。/src/)””

  • 打开c/c++生成设置、符号
  • 项目->属性->C/C++构建->设置->构建步骤->MCU GCC编译器->符号

    SVNREPREV=$(shell ../svnversion.sh ../inc/ ../Drivers/ ../libs/ ../linkerscripts/ ../makefsdata/ ../src/)
    SVNREPOVERSION="SVNREPREV"
    
  • 添加代码中使用的符号
  • 将值SVNREPOREVION=“$(SVNREV)”添加为符号

  • 保存项目设置并生成
  • 构建现在运行良好,我收到了我的svn修订号。 makefile.defs执行一次。这将从使用过的文件夹中读取所需的SVN视图。这个值将被写入到SVNREPOVERSION中,我在代码中使用它。

    通过Eclipse的makefiles提供了一些提示,这似乎更容易一些。很好的链接,thx:)我用makefile.defs尝试了Eclipse的方法。很好用。我会尽快为我的问题添加答案