編輯:的命令行參數與生成文件
這是比其他問題不同,因爲我把UNIX命令行中的變量將是「P2 -s input.txt中」,那裏有我的main.c文件將操縱他們。
所以通常用命令行參數工作時,我的代碼將是這樣的:
int main(int argc, char argv[])
{
printf("%d", argc);
return 0;
}
我將如何做到這一點有一個makefile?
編輯:的命令行參數與生成文件
這是比其他問題不同,因爲我把UNIX命令行中的變量將是「P2 -s input.txt中」,那裏有我的main.c文件將操縱他們。
所以通常用命令行參數工作時,我的代碼將是這樣的:
int main(int argc, char argv[])
{
printf("%d", argc);
return 0;
}
我將如何做到這一點有一個makefile?
GNU make不是C.
傳遞參數不能以相同的方式完成。
如果您想爲您的生成文件提供自定義參數,您可以考慮通過變量賦值來完成此操作。
例如,採取以下生成文件:
all:
@echo $(FOO)
它可以通過這樣的命令行調用:
make FOO="test"
和它將打印test
。
其它問題需要考慮:
我稱之爲程序p2。當我想運行該程序時,我會將「p2 Hi」並且應該打印2.我想將「p2」和「Hi」的參數傳遞給我的main.c程序 – John
@John也許我誤解了。所以你想讓你的makefile接受參數,然後把這些參數傳遞給你的C程序?沒有什麼能夠阻止你在'make'規則的主體中轉發這些參數。除了上面顯示的回顯命令,您可以調用您自己的程序。 –
對不起,很難用文字解釋這個。我必須改變main.c的參數嗎?我試圖檢查-s是否是argv [1](它應該是),但是我是否嘗試strcmp或==它仍然返回該標誌不存在。更令人困惑的是我還包含了一個測試打印語句 - printf(「%s」,argv [1]);並打印出來 – John
裏面使用指定的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"
,那麼你會得到一個合適的記憶慢跑。
你想用你的makefile做什麼? –
「make」的參數用於確定要構建哪些目標。 – Barmar
可能重複的[從命令行傳遞附加變量](http://stackoverflow.com/questions/2826029/passing-additional-variables-from-command-line-to-make) –