2016-04-24 128 views
0

我有一個makefile生成我的.c項目,並生成一個可執行文件。我知道這可以通過使用終端的命令./(NAME)來運行。C程序可以在與生成相同的生成文件中執行嗎?

我的問題是這樣的 - 是否有可能在makefile中實際構建和運行,以便我能夠在終端中鍵入'make',並且程序將被構建並運行文件&命令? (不需要手動運行可執行文件)。

謝謝:)

+0

是;有可能的。 –

+0

是的,這是可能的。我不太瞭解makefile,但是如果你的主要可執行文件被稱爲'test',你可以這樣做:'test:$(CC)test.cpp -o test &&。/ test' – ForceBru

回答

3

不知道什麼是你的makefile,但你可以做這樣的事情:

PROGARGS= 

.PHONY:all run 

all:prog 

#... 

run:all 
    ./prog $(PROGARGS) 
0

只要你正確的順序使用你的makefile依賴關係,沒有什麼運行阻止你你的C程序來自makefile。也就是說,大多數人會希望makefile只是構建文件,而不是同時運行它。

我會建議只在命令行中的單行中寫入make命令和run命令。這樣你只需要按一次輸入,但不需要在makefile中做任何事情。如果你的外殼支持的歷史後,你想建立和運行下次再來你只需要按下「UP」和「ENTER」 ......

make && ./NAME 

如果你真想把一切Makefile裏,我建議在makefile中創建一個單獨的「運行」目標,以減少混淆的機會,就像jdarthenay的answer一樣。

1

是的,它可以。

例如:

TARGET=hoge 
CC=gcc 

.PHONY: compileandrun 
compileandrun: $(TARGET) 
    ./$(TARGET) 

$(TARGET): $(TARGET).c 
    $(CC) -o $(TARGET) $(TARGET).c 

如果你有這樣的Makefile和源代碼hoge.c在你的可寫當前目錄,程序會被編譯,並與make命令來運行。

1

其他答案很好;但是,您可以使用這個其他變體(一種快速和骯髒的解決方案)。

假設你的makefile有這條線來構建你的程序:

NAME: 
    gcc source.c -o NAME 

您可以添加運行命令直接在下面:

NAME: 
    gcc source.c -o NAME 
    ./NAME 

這不一樣&&連接:它運行第一命令,如果成功的話,也是第二個命令。

相關問題