2014-01-22 104 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來運行特定的生成文件。

我希望這是你最終想要執行的。