Как скомпилировать несколько файлов с 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
, или вам нужно будет настроить сценарий сборки (и сценарий генератора).
Живой пример взят из той же ссылки выше.