2017-02-17 93 views
2

代碼如果我將運行一個代碼,調用它main.cpp,和可執行是r.exe,然後我寫具有以下目標生成文件:makefile來運行它編譯

compile: 
    g++ -std=c++11 main.cpp -o r 

的可執行文件,r.exe作爲兩個參數i.txt,o.txt。如何將第二目標添加到Makefile,這樣我可以運行下面的命令,看看該程序執行:

make run i.txt o.txt 

我曾嘗試添加第二個目標生成文件:

run: 
    r.exe $1 $2 
例如

,但是要聲明:「'r'是最新的」和「沒有爲'i.txt'完成,等等。」

我也嘗試了一段時間的搜索,但'make','run'和'variables'或'arguments'本質上是一個不相關內容的搜索防火牆。

+0

我感興趣的是看看是否有辦法做到這一點與單獨作出,但對我來說,使用bash腳本更有意義。 – synchronizer

+0

我建議你也嘗試使用像CMake這樣的跨平臺和更強大的功能。至於這個問題,只需讓你的IDE在編譯後運行它(Visual Studio有這樣的選項)。 – tambre

+0

@synchronizer是的我仍然是新來的C++。這種情況的要求是,必須逐字運行以下命令:'make compile',然後'make run i.txt o.txt'(我可以在其中放置一個bash文件嗎?) – bordeo

回答

5

您不能像這樣將參數傳遞給make。命令make run i.txt o.txt將嘗試構建規則run,i.txto.txt

盡你所能代替的就是使用一個變量:

run: 
    r.exe ${ARGS} 

make run ARGS="i.txt o.txt" 

側面說明,規則應該讓他們說他們做的文件。所以你真的會希望你的編譯規則看起來像:

r.exe : main.cpp 
    g++ -std=c++11 $^ -o [email protected] 

compile : r.exe 
.PHONY : compile