[英]How makefile sends `is up to date` for target inside a folder?
我的makefile
有一個.env
的目標,它將僅創建一個.env
文件。 當文件已經存在時,我將收到make:`.env'是最新的。
makefile
類似於:
.env: .env.sample
@echo " ⚠️ Preparing local configuration..."
@test -f .env && echo "$$DOTENV_ERROR" && exit 1 || true
@cp .env.sample .env
但是,我希望文件夾中的文件具有相同的行為。 喜歡:
./config/config.json: ./config/config.json.sample
@echo " ⚠️ Preparing local configuration..."
@test -f ./config/config.json && echo "$$CONFIGJSON_ERROR" && exit 1 || true
@cp config/config.json.sample config/config.json
而不是接收make:'./config/config.json'是最新的。 我收到CONFIGJSON_ERROR
,我想收到同樣的.env
消息,說文件是最新的。
我認為存在誤解:如果發生兩種情況中的任何一種,make都會調用配方。 首先是目標文件不存在。 那似乎就是您所依賴的那個。
第二個條件是至少其中一個前提條件比目標條件要新。 在這種情況下,您會失敗,因為目標已經存在,但目標已過期。 這似乎是這里發生的事情:目標config/config.json
存在,但config/config.json.sample
比它新。
我真的不明白為什么您要在這種情況下拋出錯誤,因此很難提出替代方案。
我不確定您要采取的行為,但我會猜測...
如果目標不存在,或者其依賴項比目標新,則Make將重建目標。 所以在您的情況下,我猜測./config/config.json.sample
可能比./config/config.json
更新。 如果您不希望復制,即使.sample文件是較新的,那么您也可以僅使用訂單 :
./config/config.json: | ./config/config.json.sample
...
結果將是.config/config.json
僅在不存在的情況下才能重建(假設它沒有其他依賴性)。 如果這兩個文件都不存在,那么./config/config.json.sample
會前建成./config/config.json
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.