簡體   English   中英

如何將Shell命令的結果存儲在Makefile中?

[英]How do I store the results of a shell command in a makefile?

我在本地使用MacOS上的GNU Make 3.8(i386-apple-darwin11.3.0)

我正在嘗試根據目錄中的文件生成一堆測試文件。

現在,我可以獲取文件的基本名稱,但是我無法弄清楚如何將它們存儲在變量中,因此可以生成另一個具有基本名稱的文件

TEST_FILES = lib/*.js

build-test:
    @mkdir -p tests
    -@for file in $(TEST_FILES); do \
        echo $$file; \
        MYNAMES = $(basename $$file .js) \
        echo $MYNAMES; \
    done

然后,我想使用STDOUT流的輸出創建一堆名為$ MYNAME.log的文件。

我一直堅持將名稱放入變量中, 到目前為止 ,當我嘗試實現它們時,我發現的解決方案正在為我拋出錯誤

這條線在這里

echo $MYNAMES; \

將替換make變量M的值,就像您寫了$(M)YNAMES一樣。 你要

echo $$MYNAMES; \

代替。

這條線

   MYNAMES = $(basename $$file .js) \

不能正常工作-您正在使用一個make命令的basename ,該basename只能在調用子shell執行規則之前執行一次,而file是一個shell變量,它會更改循環的每次迭代。 您可能是用$$(basename $$file)代替的,它將作為“ $(basename $ file)”傳遞到外殼。 Shell將插入運行basename命令的結果。

確保確實要將它們存儲在shell變量中,而不是作為make變量。 了解差異至關重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM