在我Fedora15的盒子,我可以寫Makefile文件是這樣的:Makefile變量賦值:'include'不允許作爲變量嗎?
app = MyApplication
deps = `pkg-config ...`
這工作完全正常。然而,每當我嘗試在Debian機器上執行這樣的Makefiles時,顯然由於'='周圍的空白而出現錯誤。所以重寫他們是這樣的:
app=MyApplication
deps=`pkg-config ...`
修復它。現在我的問題是,這種不兼容性是如何引起的?我的Fedora版本是3.82,而我的Debian版本是3.81。搜索化妝的更新日誌沒有發現任何變化這將使這一切成爲可能要麼..
編輯:
我似乎已經找到了這種怪異的行爲的原因:在大多數我的makefile,我通常使用變量「include」來保存所有的pkg-config輸出。現在顯然「包括」是某種關鍵字,當被使用不這樣在Debian
include="stuff"
觸發宏,尋找路徑或東西。如果我如上所示使用它,我可以將其用作普通變量。但現在有趣的部分是:我可以總是使用'include'作爲Fedora上的變量名!因此,像這樣的臺詞:
include = `pkg-config --blah`
完美工作的Fedora下,但始終未能在Debian下吐出的臺詞「的Makefile:2:=:沒有這樣的文件或目錄」(這是expetcing「=」號和其他一切顯然是路徑)
現在我的問題仍然存在,但是爲什麼我可以在Fedora上做這樣的事情(爲什麼'包含宏似乎沒有定義在那裏),但不是在Debian上?
我正在運行Debian(使版本3.81-8.2),並且我對變量周圍的空格沒有任何問題。 – 2012-07-20 23:00:21
@Nicolás嗯,我在兩臺Debian機器上試了這個,一臺在工作,另一臺在RaspberryPi上,它總是出現故障.. – Ancurio 2012-07-21 01:04:34
奇怪。文檔中明確指出空白空間應該被忽略,請參閱[設置變量](http://www.gnu.org/software/make/manual/html_node/Setting。HTML#設置)。在Linux上,'make'使用宏'isblank()'來檢測這些空格,而空格又使用語言環境設置。您的區域設置應將空白定義爲「」或「」。您的語言環境可能有問題?你會得到什麼錯誤? –
2012-07-21 11:57:59