2015-02-05 106 views
0

是否可以編譯多個文件併爲不同名稱的每個文件保存輸出?我只從舊電腦複製.cpp文件到我的新電腦。這些程序都是無錯誤的,並進行了測試。所以現在我必須編譯每個文件才能得到輸出文件。大約有310個程序,所以很難編譯每個文件separate.I通常保存輸出文件相同的文件名沒有任何擴展名。有什麼辦法編譯目錄中的所有文件,並保存每個文件輸出分開。我期待着這樣的命令GCC編譯器:編譯具有不同輸出文件名的多個文件

gcc *.cpp -o * 

如果有文件,

filename1.cpp

filename2.cpp等

我想要得到的輸出文件如這個:

filename1

filename2等

編輯:

有什麼辦法.cpp文件的時間戳保存到輸出文件?

+0

請在命令行嘗試此操作:'for * in .cpp;做g ++ -o $ {file%*。cpp} $文件;完成' – Galik 2015-02-05 13:42:11

+0

@Galik謝謝。有效 。 – CodeIt 2015-02-05 13:45:33

+0

@Galik我已發佈您的評論作爲答案。 – CodeIt 2015-02-05 13:51:54

回答

2

如果每個文件應該有它自己的可執行文件,他們都在同一個目錄,你可以這樣做:

for i in *.cpp; do g++ $i -o `basename $i .cpp`; done 

要添加時間戳:

for i in *.cpp; do g++ $i -std=c++11 -o `basename $i .cpp`-`date +%Y%m%d -r $i`; done 

這將產生日期以YYYYMMDD格式文件名和連字符後

要更改修改日期:

for i in *.cpp; do g++ $i -std=c++11 -o `basename $i .cpp`; touch -t `date +%Y%m%d%H%M -r $i` `basename $i .cpp`; done 
+0

您忘記了'-Wall -Wextra -g'標記爲'g ++' – 2015-02-05 13:43:55

+0

@BasileStarynkevitch,這僅僅是一個例子 – prajmus 2015-02-05 13:44:43

+0

@prajmus有什麼方法可以將.cpp的時間戳保存到輸出文件。 – CodeIt 2015-02-05 13:58:04

0

你可以用「make」程序和一個合適的makefile來做到這一點。它使用規則(某些預定義的)將「.cpp」文件轉換爲「.o」和可執行文件。快速檢查表明,GNU make對.cpp有一個默認的規則.o(很久以前,它沒有)。

+0

什麼是make程序和makefile?我不知道。 – CodeIt 2015-02-05 13:38:50

+0

@manutd:查看我的答案,並按照鏈接! – 2015-02-05 13:39:31

+0

@BasileStarynkevitch對不起,我無法理解這些事情。我是初學者。 – CodeIt 2015-02-05 13:41:59