2015-05-06 2 views
2

У меня есть простая программа на C (helloworld), которая компилируется и работает на моей машине Windows 7 (через MinGW) с помощью Make. Теперь я хотел бы переключить свою систему сборки на использование Gradle (личные причины, неуважение Make!), И я пытаюсь обмотать мой мозг вокруг Gradle Native Plugins (и действительно, C-плагин).Gradle C/Native Plugin: Структура, платформы и ароматы каталогов

У меня есть две конкретные проблемы:

  • требуется ли плагин C определенную структуру каталогов проекта, как и большинство других Gradle плагинов делать? В документах плагина C я вижу несколько экземпляров исходной папки с именем src/main/headers. В Java-land Gradle по умолчанию ожидает, что у вас есть, скажем, src/main/java и src/main/resources, для правильной работы и т. Д. Если то же самое верно для плагина C, , что это требуется/рекомендуемая структура каталогов для программы на C?
  • Я понимаю объяснение документации платформ, но ароматы летели прямо над моей головой; и использование платформ и аксессуаров вместе - еще большая загадка. Скажем, я хочу определить один вариант сборки для поддержки Linux в архитектуре x86 и еще один вариант поддержки 64-разрядной Windows. Каков пример комбо-платформы/вкуса, который мог бы достичь этих вариантов?

ответ

3

Конвенция для собственных двоичных файлов в Gradle должен поместить заголовки в src/{componentName}/headers и исходных C-файлов в src/{componentName}/c, где componentName бы то, что вы называете компонент (данный вопрос, я предполагаю, что будет helloworld, но это зависит от того, как вы это заявляете). Ароматизаторы предназначены для разных вариантов сборки, например, если вы хотите скомпилировать версии с различными функциями. Компиляция для различных целей, таких как x86 Linux и 64-битной Windows, будет сделана только с платформами, как это:

model { 
    platforms { 
     linux32 { 
      architecture "x86" 
      operatingSystem "linux" 
     } 
     win64 { 
      architecture "x86_64" 
      operatingSystem "windows" 
     } 
    } 
} 

Я предполагаю, что вы используете Gradle 2.3, но все изменилось многое за последнюю пару релизов.