我試圖在GNU makefile中編譯它之前檢查列表中的文件。每次調用規則或僅調用一次時,是否會評估下面的條件ifneq?這種情況似乎總是以同樣的方式進行評估。條件檢查GNU makefile命令中的字符串列表
如果不是唯一的方法來做到這一點,把條件在shell命令?我意識到目標列表可能「不行」,似乎很奇怪...... Make系統當然可以固定以消除這種怪異,但痛苦會更大。
有什麼建議嗎? 禮
OKSRC := realfile1.cpp realfile2.cpp
%.o: %.cpp
ifneq ($(findstring $<,$(OKSRC),),)
... do the compile
else
#skip the file
endif
這並不是真正意義。如果你不編譯這個文件,那麼'target.o'不會被創建,這會破壞你的makefile中的其他規則。你的目標是什麼? –
它不應該是target.o,而是更通用的%.o。我做了編輯。如果它很簡單,但是構建系統存在缺陷,並且某些%.o被錯誤地標識爲必需的先決條件,那麼您是對的。這些%.o可以安全地忽略。上下文需要段落,所以我已經抽象瞭解了Make的有用部分。我已經看到過之前沒有縮進的「ifneq」模式,但沒有一個明確說明是否重新評估每個新的$ <和$ @。如果沒有,我想我需要某種外殼解決方案。 –