如何使用Coliru编译多个文件?

时间:2015-10-05 15:44:52

标签: c compilation multiple-files coliru

明天我有一家公司的考试。我的文件必须易于使用Coliru(Web编译器)进行编译:http://coliru.stacked-crooked.com/

但这是我的问题:"如何在Coliru中使用多个文件?"我读了Q& A但没有成功。

这是我想测试的程序:

#include <stdlib.h>
#include <stdio.h>

//MyLibraries
#include "Addition.c"
int main(int argc, char * argv[])
{

    Addition();

    return EXIT_SUCCESS;
}

这是我的&#34; Addition.c&#34;档案:

#include <stdio.h>
#include <stdlib.h>

void Addition(int a, int b);

void Addition(int a, int b)
{
    printf("%d", (a + b));
}

如果有人可以向我解释如何使用Coliru编译多个文件,它会非常棒。 THX

1 个答案:

答案 0 :(得分:0)

Coliru问题跟踪器中有this comment,它提出了以下建议。

  • 选择一个包含文件名的标题,例如==> Makefile <==
  • 将此类标头放入每个文件
  • 连接文件
  • 将生成的代码(假定为Coliru在main.cpp中)放入源字段之后,请使用以下构建命令(我将其与链接的注释一起复制到此处,以供参考) :
# Here is a cool technique to use Coliru for small "Makefile projects":
# (No need to say "thanks" but if you feel inclined: coliru [at] tbfe.de)
pr -ti main.cpp|awk '/==> [^ ]+ <==/ {f=$2;next} {print>>f}' && make

此脚本的工作方式:

  • pr -ti将8字符转换成制表符(Makefile在语法上有效)
  • awk ...找到标题行,从中提取文件名,然后将所有内容写入,直到将下一个标题写入相应的文件中
  • make仅对结果文件集起作用。

如何将项目转换为这种格式:

for file in *; do printf "==> $file <==\n" >> main.cpp; cat "$file" >> main.cpp; done

注意:确保您的项目没有名为main.cpp的文件,否则您需要调整构建脚本(和生成器脚本)。

live example来自上面的同一链接。