GCC编译器:编译具有不同输出文件名的多个文件

时间:2015-02-05 13:33:18

标签: c++ linux gcc compilation output

是否可以编译多个文件并为每个具有不同名称的文件保存输出?我只是将.cpp文件从旧计算机复制到我的新计算机。这些程序都没有错误并且经过测试。所以我现在必须编译每个文件才能得到输出文件。这里有大约310个程序所以很难分别编译每个文件。我通常使用相同的文件名保存输出文件,没有任何扩展名。有没有办法编译目录中的所有文件并单独保存每个文件输出。我期待着像这样的命令

gcc *.cpp -o *  

如果有文件,

filename1.cpp

filename2.cpp等。

我想得到像这样的输出文件:

文件名1

filename2等。

编辑:

有没有办法将.cpp文件的时间戳保存到输出文件。??

3 个答案:

答案 0 :(得分:3)

如果每个文件都有自己的可执行文件,并且它们都在同一个目录中,那么你可以这样做:

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

答案 1 :(得分:0)

你可以用" make"程序和合适的makefile。它使用规则(一些预定义的),用于转换" .cpp"文件到" .o"和可执行文件。快速检查显示GNU make确实有.cpp到.o的默认规则(很久以前,它没有)。

答案 2 :(得分:0)

GCC编译器(内部)一次编译一个文件(但也有Link Time Optimization)。

您想要使用像GNU make这样的构建器;根据您的需要调整this example(或that one)。