我有一個Makefile系統動態生成的規則建立的文件列出了不同的平臺。由於各種原因,不能使用隱式規則,因爲沒有適用的通用模式,而是通過文件列表輸出各種功能。重寫明確的規則Makefile中
現在我想的方式,它只是引發了那些需要被構建的目標添加自動依存產生。執行此操作的正常方法是定義生成依賴項的隱式規則,然後包含或定義顯式規則,這些規則需要這些依賴項作爲同一目標的先決條件(有關示例,請參閱http://mad-scientist.net/make/autodep.html)。這是有效的,因爲使用相同規則的顯式版本自動覆蓋隱式規則而不抱怨。
然而,因爲我別無選擇,使用隱含規則我試圖想出一個辦法做到這一點。我看到只有兩種方法:
- 動態地重寫顯式規則並獲得「警告:覆蓋目標的命令」爲每個。
- 找到一個方法告訴讓一個現有的規則定義,所以我可以提供一個新的。
由於AFAIK沒有辦法做第二個選擇,有沒有人知道我可以如何抑制「覆蓋目標的命令」警告?任何其他建議用於覆蓋顯式規則並使用新的先決條件再次對它們進行評估?
一個makefile可以按照預期工作,只有顯式規則和沒有隱式規則。你能提供一個你想要做的事情的簡單例子嗎? – Ned
例如,這但沒有模式規則:http://mad-scientist.net/make/autodep.html#norule不一定使用makedepend,但是可以使用任何方式爲相同目標生成具有正確依賴關係的新規則。在這個例子中,這是通過下面的include完成的。 – user3176103
儘管你的構建系統可能非常需要像通過你提供的鏈接描述的那樣的自動依賴機制的複雜性,但你可能不會 - 我個人已經看到了許多非常糟糕的解決方案,以解決'make'的缺陷和跨平臺的問題 - 即「便攜」 - 建立在過去35年左右(Imake,任何人?)。你能否提供一個示例顯式的目標依賴規則片段來演示你需要做什麼?此外,所有版本都是在Unix/Linux/Mac OS X上執行的,還是有其他使用'make'構建的平臺,但沒有完整的Unix工具集? – Ned