2016-02-26 51 views
-1

編輯:的命令行參數與生成文件

這是比其他問題不同,因爲我把UNIX命令行中的變量將是「P2 -s input.txt中」,那裏有我的main.c文件將操縱他們。

所以通常用命令行參數工作時,我的代碼將是這樣的:

int main(int argc, char argv[]) 
{ 
    printf("%d", argc); 
    return 0; 
} 

我將如何做到這一點有一個makefile?

+0

你想用你的makefile做什麼? –

+0

「make」的參數用於確定要構建哪些目標。 – Barmar

+0

可能重複的[從命令行傳遞附加變量](http://stackoverflow.com/questions/2826029/passing-additional-variables-from-command-line-to-make) –

回答

2

GNU make不是C.
傳遞參數不能以相同的方式完成。

如果您想爲您的生成文件提供自定義參數,您可以考慮通過變量賦值來完成此操作。

例如,採取以下生成文件:

all: 
    @echo $(FOO) 

它可以通過這樣的命令行調用:

make FOO="test" 

和它將打印test


其它問題需要考慮:

  • 打電話讓
  • 依靠Makefile文件
+0

我稱之爲程序p2。當我想運行該程序時,我會將「p2 Hi」並且應該打印2.我想將「p2」和「Hi」的參數傳遞給我的main.c程序 – John

+0

@John也許我誤解了。所以你想讓你的makefile接受參數,然後把這些參數傳遞給你的C程序?沒有什麼能夠阻止你在'make'規則的主體中轉發這些參數。除了上面顯示的回顯命令,您可以調用您自己的程序。 –

+0

對不起,很難用文字解釋這個。我必須改變main.c的參數嗎?我試圖檢查-s是否是argv [1](它應該是),但是我是否嘗試strcmp或==它仍然返回該標誌不存在。更令人困惑的是我還包含了一個測試打印語句 - printf(「%s」,argv [1]);並打印出來 – John

0

裏面使用指定的makefile文件這樣 不同的目標之前,設置環境變量:

COMMAND = echo 'You did not specify make COMMAND="cmd 2 run" on the command line' 

all: 
    ${COMMAND} 

現在,當您運行make COMMAND="p2 Hi"時,您將獲得該命令運行和相應的輸出。如果你忘記指定COMMAND="something or another",那麼你會得到一個合適的記憶慢跑。