C 为“创建生成环境”;";在编译时动态选择文件夹的项目

C 为“创建生成环境”;";在编译时动态选择文件夹的项目,c,embedded,multiplatform,build-process-template,C,Embedded,Multiplatform,Build Process Template,假设我的文件夹结构是这样的 +--应用程序 | +--微型控制器1 | +--微型控制器2 | +--微型控制器3 我有一个编译开关(SELECT_MICRO)设置为#define SELECT_MICRO==MICRO_CONTROLLER_1,那么我的项目应该在MICRO_CONTROLLER_1中使用驱动程序文件构建应用程序,类似地,如果#define SELECT_MICRO==MICRO_CONTROLLER_2,那么应用程序应该在MICRO_CONTROLLER_2中使用驱动程序文件

假设我的文件夹结构是这样的

+--应用程序
|
+--微型控制器1
|
+--微型控制器2
|
+--微型控制器3

我有一个编译开关(SELECT_MICRO)设置为#define SELECT_MICRO==MICRO_CONTROLLER_1,那么我的项目应该在MICRO_CONTROLLER_1中使用驱动程序文件构建应用程序,类似地,如果#define SELECT_MICRO==MICRO_CONTROLLER_2,那么应用程序应该在MICRO_CONTROLLER_2中使用驱动程序文件构建应用程序


请让我知道是否有实现上述目标的模板

通常,您将
定义
您的预处理器定义,以告知预处理器仅包括,例如,MICRO_CONTROLLER_1代码块,而忽略其他所有内容

类似于以下内容的内容就足够了:

#if defined(MICRO_CONTROLLER_1)
// Block of code that is only available to MICRO_CONTROLLER_1
#elif defined(MICRO_CONTROLLER_2)
// ...
// All other microcontrollers you are supporting would follow this structure.
#endif

然后您需要定义MICRO\u控制器1。如果您使用IDE进行开发,通常会有一个用于预处理器指令的项目选项。这是您将
定义
微型控制器\u 1的地方。然后,您可以创建不同的“配置”-针对每个目标微控制器创建一个配置。

只有在目录中只有include文件的情况下,这才有效#define是一个预处理器指令。如果目录中有源文件,则需要在构建系统层而不是预处理器层解决它


假设只是包含文件,您只需
#include SELECT_MICRO#“Interface.h”

您可以导出要生成的文件夹的特定路径,并提供可执行文件的路径。你可以得到更多的信息。在这个线程中

或者简单地维护不同的makefile来生成不同的构建,并使用make-f来运行特定的makefile

我希望这就是你最终想要表现的