Как скомпилировать несколько файлов с Coliru?

Завтра у меня тест для компании. Мои файлы должны легко компилироваться с помощью Coliru (веб-компилятор): 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;
}

И это мой файл "Addition.c":

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

void Addition(int a, int b);

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

Если кто-нибудь сможет объяснить мне, как скомпилировать несколько файлов с помощью Coliru, это будет здорово. Спасибо

0 ответов

В трекере проблем Coliru есть комментарий, который предлагает следующий путь.

  • Выберите заголовок, содержащий имя файла, например ==> Makefile <==
  • Поместите такие заголовки в каждый файл
  • Объедините файлы
  • После помещения полученного кода (предполагается, что он находится в main.cpp by Coliru) в поле источника, используйте следующую команду сборки (я копирую ее сюда с комментарием из ссылки, для атрибуции):
# 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, или вам нужно будет настроить сценарий сборки (и сценарий генератора).

Живой пример взят из той же ссылки выше.

Другие вопросы по тегам