在多个文件夹中编译C程序

时间:2012-11-17 00:39:08

标签: c shell automation

我有一堆带有C程序的目录。我需要逐个编译它们并在主程序中使用结果。

所以我的主程序遍历目录结构[我不确定结构是什么,它可能会随着时间而改变]并一次编译一个C程序,在一些计算中使用该结果。

所以如果我在C中编写主程序并使用nftw来遍历。

OR

编写一个Shell主程序。

哪个appraoch更好?

1 个答案:

答案 0 :(得分:0)

我猜你使用兼容的Unix / Linux / Cygwin系统.... 因此,我建议使用shell解决方案,因为它更适合于目录处理。

每个程序

Makefile

正如@Dogbert所说,make可用于构建多个程序。可以并行执行构建(使用选项-j)。此外,make也可以关注依赖关系。

我不知道您是否使用Makefile语法。因此,我举一个关于需要三个C文件和一个头文件的程序的快速示例:

program: file1.o file2.o file3.o
    gcc -o -o $@ $^

%.o: %.c header.h
    gcc -c -o $@ $< 

以下命令将并行编译file1.cfile2.cfile3.c。然后链接阶段将等待这些树编译的完成。

make -j3

目录发现

以下命令查找每个Makefile并运行make命令:

find . -name Makefile -exec make -j3 -f '{}' ';' 2>&1 | tee result.txt

如果您的计算机中有8个核心,则可以使用-j8

在主程序中重用

构建结果显示在shell屏幕上,也存储在result.txt文件中。

更多信息?

我不知道你的系统或知识是什么。希望这可以提供帮助。如果您不确定某些部分,请询问更多信息。 ; - )