2012-07-11 14 views
7

Qt'nin üzerine bir proje hazırladım (bu yüzden kaynak C++ ile yazılmıştır) ve bunun üzerine otomatik yapı için Gradle'ı denemek istedim. Çok projeli bir yapıyı yapılandırmanın ayrıntılarını öğrenmek için biraz zamanımı harcadım (bir çalıştırılabilir ve iki libre var) ve şimdi kaynak ağacımın nasıl yapılandırıldığını cpp-exe ve cpp-lib eklentisine anlatmaya çalışıyorum. Ben bu görevi çalıştırırsanızToplayıcıda cpp kaynaklarının yapılandırılması

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

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

Gradle söyler: Ben (? En azından varsayılan olanları doğru olmamalıdır) kaynak setleri tüm yazdırmalısınız bir görev kurdunuz ve bu gibi görünüyor

proje için "sourceSets" özelliği yok. The documentation of the plugin, kaynak konumlarını özelleştirmenin mümkün olduğunu, ancak nasıl yapılacağını söyler.

Bu yüzden sorum şu olurdu: Hangi kaynak dosyalarının kullanılacağını Gradle cpp eklentisine nasıl söyleyebilirim. API belgelerinden ayrı olarak cpp eklentisi ve yardımcı olacak Gradle kullanıcı kılavuzu ile ilgili bir belge varsa.

cevap

9

Gradle'ın 'cpp plugin' ürününün Adam Murdoch's usage'una bakın. Onun ana Gradle gönderenler biri olduğuna inanıyorum, bu yüzden herkesten iyi nasıl kullanılacağını bilmelidir: Ben üzerine kendim bakmak için çok uzun oldu değil 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 

den

uygularlar fakat Bir dizi OS mimarisini temel alan kaynak kodları tanımlamak gibi görünüyor ve bunları değişkenleri değişkeninde saklar. Daha sonra onları platform JAR'larına işliyor (henüz inşa etmedim, belki de yapmalıyım).

Ayrıca, https://github.com/rklaren/GradleJNI'a bir göz atın, cpp plugin'u kullanır, ancak biraz Windows yönelimli görünüyor.

Güncelleştirme - Ayrıca bir yürütülebilir bina eklentisi 'CPP-exe' bir örnek olan, https://github.com/alkemist/gradle-cpp-demo bulduk.

İlgili konular