如何在IAR Embbeded Workbench中编译两个版本的代码

如何在IAR Embbeded Workbench中编译两个版本的代码,c,iar,C,Iar,我有两个版本的代码,我需要切换它们,因为在IAR项目中保留两个版本的同时,工作需要编译每一个版本。我找到了类似“编译开关”的东西,但我不知道它是怎么做的。是否有人告诉我可以搜索的关键字或建议?您可以使用C预处理器的“定义”功能在代码版本之间切换,并使用IAR EWARM project的“定义符号”功能来启用将包含在所有C文件中的特定头文件(例如:defines.h)中的“定义”列表 定义.h 在rf.c 在serial.c中 在项目选项>C/C++编译器>预处理器>定义的符号中:如果需要发布版

我有两个版本的代码,我需要切换它们,因为在IAR项目中保留两个版本的同时,工作需要编译每一个版本。我找到了类似“编译开关”的东西,但我不知道它是怎么做的。是否有人告诉我可以搜索的关键字或建议?

您可以使用C预处理器的“定义”功能在代码版本之间切换,并使用IAR EWARM project的“定义符号”功能来启用将包含在所有C文件中的特定头文件(例如:defines.h)中的“定义”列表

定义.h

rf.c

在serial.c中

项目选项>C/C++编译器>预处理器>定义的符号中:如果需要发布版本,请添加产品版本;如果需要测试版本,请添加测试版本;如果需要调试版本,请添加调试版本


您只能选择以上三种配置中的一种,因为IAR只能通过项目编译编译一个版本。除非您可以创建一个批生成脚本,以允许在使用三种不同项目设置创建的不同输出文件下生成所有三个版本。

IAR在工具栏项目>编辑配置中有一个配置
它使您可以通过设置这些工具设置版本“开关”,并且可以为每个设置设置预处理器命令

您可以在project中有多个配置,也可以在workspace中有多个项目。为什么不能使用版本控制系统来执行此操作?SVN是否有这样一个特定的功能,或者您是否建议选择哪个版本并编译它?我实际上需要一些类似预处理器命令的东西。此外,我的意思是代码版本有不同的特性,而不是每个版本的修订版本,。
#if defined(PROD_VERSION)

    #define SOFTWARE_VERSION_PRODUCT ("1.0-release")
    //...whetever specific #defines meant for the release version, for example...
    //#define ENABLE_RF_STUB
    #define USE_SERIAL_CTS_RTS

#elif defined(TEST_VERSION)

    #define SOFTWARE_VERSION_PRODUCT ("1.0-test")
    //...whetever specific #defines meant for the test version, for example...
    #define ENABLE_RF_STUB
    #define USE_SERIAL_CTS_RTS

#elif defined(DEBUG_VERSION)

    #define SOFTWARE_VERSION_PRODUCT ("1.0-debug")
    //...whetever specific #defines meant for the debug version, for example...
    #define ENABLE_RF_STUB
    //#define USE_SERIAL_CTS_RTS

#endif
#include "defines.h"

void rfInit(void)
{
#ifndef ENABLE_RF_STUB
    //init RF here
#endif
}
#include "defines.h"

CPU_BOOLEAN isCtsRts()
{
#ifdef USE_SERIAL_CTS_RTS
    return HAL_SERIAL.isCtsRts();
#else
    return DEF_TRUE; //bypass CtsRts check
#endif
}