2014-01-11 2 views
27

In Gradle 1.10 Примечания к выпуску http://www.gradle.org/docs/current/release-notes Я вижу, что C++ построена.C++ с градиентом

Как создать проект C++ для построения с помощью градиента? (без IDE)

Пусть у меня есть

ProjectFolder/hello.cpp 
ProjectFolder/build.gradle 

hello.cpp:

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

int main(void) { 
    puts("Hello World!!!"); 
    return EXIT_SUCCESS; 
} 

Что должно быть основным build.gradle для этого проекта C++?

ОБНОВЛЕНИЕ: Я уже рассмотрел Chapter 72 of User Guide и упомянутые 2-летние примеры. Они не делают его более простым, но более сложным.

1 пример файла с 6 строками. Я не касался C++ в течение 10 лет, и мне просто хотелось быстро начать, например. с GCC. (Пока не найдены)

+1

[Руководство пользователя Gradle] (http://gradle.org/docs/current/userguide/userguide_single.html) и образцы в полном распределении Gradle должны начать работу. –

+0

Вся необходимая информация здесь => http://www.gradle.org/docs/current/userguide/nativeBinaries.html –

+0

И здесь => https://github.com/alkemist/gradle-cpp-demo –

ответ

26
  1. положить это в build.gradle

    apply plugin: 'cpp' 
    executables { 
        hello {} 
    } 
    
  2. поместить исходный файл в SRC/HELO/CPP/say_hello.cpp

  3. бег 'Gradle helloExecutable'

  4. ваш исполняемый файл должен быть построен для сборки/двоичных файлов/helloExecutable/hello

Или, если вы хотите, чтобы ваш источник в SRC/Foo/бар затем добавить

sources { 
    hello { 
     cpp { 
     source { 
      srcDir "src/foo/bar" 
     } 
    } 
} 
+0

Не могли бы вы также указать вариант без перемещения источников. –

+0

В руководстве пользователя показано, как настроить плагин, если вы хотите, чтобы ваши источники находились в другом месте. Я отредактирую свой ответ. –

+1

Это не работает для последних версий (выше gradle 2.3+), для этого, пожалуйста, используйте решение models.components, размещенное здесь Amnon Shochot! –

12

Начиная с Gradle 2.3 произошли значительные изменения в нативной-компонента сборки и executables и libraries контейнеры не доступны больше. Приводя Gradle 2.3 Release notes:

... DSL, для определения родных исполняемых файлов и библиотек принципиально изменилось. Контейнеры исполняемых файлов и библиотек имеют , а компоненты теперь добавляются по типу к компонентам контейнер, принадлежащий реестру моделей. Другим существенным изменением является то, что исходные наборы для компонента теперь объявляются непосредственно в определении компонента вместо того, чтобы быть сконфигурированным на источнике .

Обновленный Gradle код совместим с Gradle 2.3+ будет поэтому выглядеть следующим образом:

model { 
    components { 
    hello(NativeExecutableSpec) { 
     sources { 
     cpp { 
      source { 
      srcDir "src/foo/bar" 
      } 
     } 
     } 
    } 
    } 
} 

Вы можете узнать больше о новой модели в Gradle руководстве пользователя here.

+5

Я не понимаю, почему они сделали эти изменения. Для кого-то вроде, кто только начал изучать град, это просто кошмар, чтобы учиться. – Julien

1

Это еще один ответ. Я использую Gradle 2.4.7.Мой исходный код является стандартом C++, как и в следующей структуре каталогов на Windows:

MyProject

MyProject \ ЦСИ

MyProject \ SRC \ main.cpp

MyProject \ build.gradle

main.cpp - это программа Hello World C++.

У меня есть Visual Studio 2015. Мне нравится использовать его компилятор C++ для стандартных программ на C++.

build.gradle выглядит следующим образом:

apply plugin: 'cpp' 

model { 
    components { 
     main(NativeExecutableSpec) { 
      sources { 
       cpp { 
        source { 
         srcDir "src" 
        } 
       } 
      } 
     } 
    } 

    binaries { 
     all { 
      if (toolChain in VisualCpp) { 
       cppCompiler.args "-IC:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.10240.0\\ucrt" 
       linker.args "/LIBPATH:C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.10240.0\\ucrt\\x86" 
      } 
     } 
    } 
} 

Дополнительный параметр компилятора и линкера вариант из-за некоторых изменений в Visual Studio 2015 от предыдущих версий. Без параметров вы получите компиляцию, которая не сможет найти corecrt.h или ошибку компоновщика, которая не сможет найти libucrt.lib.

Надеюсь, это поможет вам быстро начать сборку C++ с Visual Studio 2015!

Смежные вопросы