2012-07-11 3 views
7

Qt 위에 프로젝트를 설정 했으므로 (소스는 C++로 작성되었습니다) 자동 빌드를 위해 Gradle을 사용하려고했습니다. 여러 프로젝트 빌드 (실행 파일과 두 개의 libs가 있음)를 구성하는 세부 사항에 대해 잠시 시간을 들였습니다. 이제는 cpp-execpp-lib 플러그인에 내 소스 트리가 어떻게 구성되어 있는지 알려 드리고자합니다. 나는이 작업을 실행하면그래 프에서 cpp 소스 구성하기

task projectinfo { 
description = "Informations about the current project" 
group = INFORMATIONS_GROUP 

doFirst { 
    task -> print ("""${task.project.sourceSets.all}""") 
} 

가 Gradle을 알려줍니다 : 나는 (? 적어도 기본 것들 ​​권리가 있어야한다) 소스 세트 모두를 인쇄해야 작업을 설정하고 다음과 같습니다

프로젝트에 대한 "sourceSets"속성이 없습니다. The documentation of the plugin은 소스 위치를 사용자 정의 할 수는 있지만 방법은 사용자 정의 할 수 없다고 알려줍니다.

제 질문은 : 어떻게 할 소스 파일을 사용할 cpp 플러그인을 Gradle에 말할 수 있습니까? cpp 플러그인에 대한 문서가 API 설명서와 Gradle 사용자 가이드 이외에 있다면 도움이 될 것입니다.

답변

9

Gradle 's 'cpp plugin'Adam Murdoch's usage을 살펴보십시오. 나는 그가 주 Gradle을 제출자 중 하나입니다 생각, 그래서 그는 누구보다이보다 효율적으로 사용하는 방법을 알아야한다 : 나는 그것을 통해 자신을보고하는 데 시간이 너무 오래가 없었습니다 native-platform/build.gradle

cpp { 
    sourceSets { 
     main { 
      source.exclude 'curses.cpp' 
     } 
     curses { 
      source.srcDirs = ['src/main/cpp'] 
      source.include 'curses.cpp' 
      source.include 'generic.cpp' 
      source.include 'generic_posix.cpp' 
     } 
    } 
} 

Then, within the 'libraries' node, refer to all/any combination of architecture and source sets: 

sourceSets << cpp.sourceSets.main 
sourceSets << cpp.sourceSets.curses 

에서

발휘하지만, 그가 OS 아키텍처 기반의 소스 코드 조합을 포함하는 숫자를 정의하고이를 변종 변수에 저장하는 것처럼 보입니다. 그런 다음 플랫폼 JAR로 프로세스를 처리합니다. 실제로 빌드를 실행하지는 않았지만 어쩌면해야합니다.

또한 https://github.com/rklaren/GradleJNI을 살펴보고 cpp plugin을 사용하지만 약간의 Windows 지향적 인 것으로 보입니다.

업데이트 - 실행 파일을 작성하는 'cpp-exe'플러그인의 예가있는 https://github.com/alkemist/gradle-cpp-demo도 있습니다.