2014-01-22 62 views
0

比方说我的文件夹结构是这样的动态选择的文件夹创建一个构建环境..为“C”的项目在编译时

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

,我必须设置为#定义SELECT_MICRO == MICRO_CONTROLLER_1,然后我的项目应建立在MICRO_CONTROLLER_1驱动程序文件的应用程序编译开关(SELECT_MICRO),如果同样的#define SELECT_MICRO == MICRO_CONTROLLER_2,那么应用程序应该使用MICRO_CONTROLLER_2中的驱动程序文件构建应用程序

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

回答

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 

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

0

这只能在目录只包含文件的情况下才起作用。 #define是一个预处理指令。如果这些目录有源文件,则需要在构建系统层解决,而不是预处理器层。

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

1

可以导出你想建立并提供路径的可执行文件夹的那个特定的路径。你可以得到更多的信息。在这个线程中。

How I could add dir to $PATH in Makefile?

或者干脆保持不同的Makefile文件,使不同的建造和使用make -f来运行特定的生成文件。

我希望这是你最终想要执行的。