2012-03-19 170 views
0

我正在使用gcc编译器。使用gcc进行递归编译

我的项目的源代码树看起来有点像这个

test$~: tree . 
. 
|-- folder 
| |-- hello.cpp 
| `-- hello.h 
`-- main.cpp 

1 directory, 3 files 
test$~: 

文件main.cpp包含main()功能,并在名为folder

所以在所有迄今为止目录由main.cpp 谎言调用所有功能我我从来不需要将一些源代码放在子目录下。

我所寻找的,总之,是在子目录及其子目录递归汇编等...这个命令应该从代码项目的 主目录中调用一些海湾合作委员会的命令。

+1

AFAIK,GCC没有这样的机制。通常,这种事情由您的构建系统处理(例如Make)。 – 2012-03-19 01:42:04

+0

有趣的想法。你有没有找到手册中的任何内容来暗示它可能是可能的。 AFAIK,这是不可能的,并没有列出命令行上的所有文件。 – 2012-03-19 01:43:18

回答

0

我真的无法测试它在C++库,因为我没有一个当前,但这应该工作:

find . -type f -iname *.cpp -execdir g++ {} \; 

我只是不记得省略-o选项时会发生什么为gcc。如果有必要,那么这至少会让你更接近解决方案。我会推荐使用makefile而不是

+1

'g ++ -o a.out $(find。-type f -iname * .cpp -print)'?无论如何,这是一个坏主意。 – 2012-03-19 02:02:17

+0

@VladLazarenko那么这将把所有的编译数据放入a.out? – 2012-03-19 02:06:42

+2

这应该找到所有文件并放入gcc的命令行,它将编译它们并链接到'a.out'二进制文件。如果我们说bash + linux。 – 2012-03-19 02:09:30