2013-07-31 110 views
0

我想向一個Makefile添加一個隱式規則,並且我希望它以同樣的方式處理.c和.cpp文件的編譯。我有.c文件的規則如下:Makefile隱式規則匹配.c或.cpp

%.obj: %.c 
    cl /c $(CFLAGS) $< 

我想要什麼,雖然是該模式的右側匹配.C OR的.cpp,具體取決於哪個文件是可用的。這可能嗎?我仔細閱讀了Make手冊,但還沒有找到我要找的東西。任何幫助將不勝感激。

回答

4

只要使用兩個規則即相當於「或」 make語言:

%.obj: %.c 
    cl /c $(CFLAGS) $< 

%.obj: %.cpp 
    cl /c $(CFLAGS) $< 

在結束這些兩種不同的源語言和你很可能最終會希望不同的標誌。

+0

啊,太棒了,謝謝!我誤解了手冊中的某些內容,意思是說上面的內容會覆蓋以前的規則,而不是像OR一樣運行,因此甚至沒有嘗試過。非常感激! –

+0

想想它更像是一個'switch'或者簡單的替代品 - 它們畢竟是不同的源文件。 –