0

可以说我的文件夹结构是这样的..

+-- 应用
|
+-- MICRO_CONTROLLER_1
|
+-- MICRO_CONTROLLER_2
|
+-- MICRO_CONTROLLER_3

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

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

4

3 回答 3

1

您可以导出要构建的文件夹的特定路径并提供可执行文件的路径。您可以获得更多信息。在这个线程中。

如何在 Makefile 中将 dir 添加到 $PATH?

或者简单地维护不同的 Makefile 以进行不同的构建并使用 make -f 来运行该特定的 makefile。

我希望这是你最终想要表演的。

于 2014-01-22T13:06:32.937 回答
0

这只有在目录只有包含文件时才有效。#define 是一个预处理指令。如果目录有源文件,则需要在构建系统层解决,而不是预处理器层。

假设它只是包含文件,你只是#include SELECT_MICRO # "Interface.h"

于 2014-01-22T11:55:07.687 回答
0

通常,您会define使用预处理器定义来告诉预处理器仅包含例如 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

然后你需要defineMICRO_CONTROLLER_1。如果您使用 IDE 进行开发,通常有一个项目选项用于预处理器指令。这是您将define使用 MICRO_CONTROLLER_1 的地方。然后,您可以创建不同的“配置”——为您所针对的每个微控制器创建一个。

于 2014-01-22T11:52:08.437 回答