2015-02-05 108 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