2015-06-30 41 views
1

使用基於Eclipse 4.3.2的ARM DS-5環境,我定義了一個C項目並使用Makefile來構建它。 Makefile包含一些模塊選擇變量,這些變量設置爲YN,具體取決於我們是否要包含該模塊。什麼是Eclipse的構建變量,它們與環境變量有什麼不同?

我想從項目設置中設置這些變量。因此,我用下面的結構有在Makefile默認設置:

Module_1 ?= Y 
Module_2 ?= Y 

現在,我想一個項目變量Module_1集添加到YN。碰巧在C/C++ Build下有Build VariablesEnvironment變量。當我將Module_1N添加到Environment變量時,它會覆蓋默認設置。但是,當我在Build Variables中執行相同操作時,它不起作用。

這兩種變量有什麼區別?

回答

4

據我的理解:

  • 構建變量可以在僅僅是Eclipse進行訪問。他們可能會影響其他Eclipse組件。您也可以參考在Eclipse這些變量使目標例如爲:

    make ${name_of_variable}(注意括號)

    其中「NAME_OF_VARIABLE」將在Eclipse的「生成變量」菜單聲明。這些變量可以作爲參數傳遞給外部工具,但它們不是這些工具的shell環境的一部分。 (例如,GNU make:如果在Eclipse的「Environment Variables」中聲明瞭「env_variable」,則可以使用語法$(env_variable)(其中注意括號))。它們成爲外部工具的外殼環境的一部分。請注意,它們也可以在Eclipse中用作構建變量。此外,您可以在聲明環境變量時調用構建變量,例如my_env_var = ${my_build_var},反之亦然。

的誤導性的一點是,當你在Eclipse中的「生成變量」配置頁面勾選「顯示系統變量」,你看到的Eclipse IDE本身的環境變量,加上你中定義的環境變量蝕。

我不是Eclipse的開發人員,所以我不能證明上述行爲的合理性。我懷疑目的是爲了避免僅在IDE內部有用的變量與應該傳播到外部工具環境的變量之間發生衝突。我希望在Eclipse中有一個單一的變量類型,並且可以選擇導出或不導出(例如勾選複選框「導出」)。這會更有意義。

相關問題