Google utvecklar ett byggsystem , som syftar till att ersÀtta de gamla byggscenarierna för Android-plattformen, baserade pÄ anvÀndningen av verktyget make. Soong erbjuder en enkel deklarativ byggregler för moduler, i filer med Àndelsen «.bp» (blueprints). Filformatet liknar JSON och efterstrÀvar sÄ lÄngt som möjligt att replikera syntaksen och semantiken hos byggfiler . Koden Àr skriven i Go och distribueras under Apache 2.0-licensen.
Byggfiler i Soong stöder inte villkorssatser och uttryck för förgrening, utan beskriver enbart projektets struktur, de moduler som anvÀnds vid byggandet och beroenden. Filer som ska byggas beskrivs med hjÀlp av maskor och grupperas i paket, var och en representerar en samling filer med angivna relaterade beroenden. Variabler kan definieras. Variabler och egenskaper Àr strikt typade (typen av variabler vÀljs dynamiskt vid första tilldelningen, medan för egenskaper statiskt beroende av modulens typ). Komplexa element av bygglogik har flyttats till hanterare, i Go.
Soong flÀtas samman med ett mer allmÀnt projekt , inom vilket en plattformsoberoende metasystem för byggnation utvecklas, som baserat pÄ filer med deklarativa modellspecifikationer, formar byggscenarier (en ersÀttare till make), som beskriver de kommandon som behöver utföras för byggandet och beroenden. IstÀllet för att anvÀnda komplexa regler eller domÀnspecifika sprÄk för att definiera bygglogik anvÀnds i Blueprint projektspecifika hanterare skrivna i Go (Soong Àr i grunden en uppsÀttning sÄdana hanterare för Android).
Denna metod gör det möjligt för stora och heterogena projekt, som Android, att implementera komplexa element av bygglogik i kod skriven i ett högre programmeringssprÄk, samtidigt som möjligheten att med hjÀlp av enkelt deklarativ syntaks göra förÀndringar i moduler relaterade till byggorganisation och projektstruktur upprÀtthÄlls. Till exempel, i Soong görs valet av kompilatorflaggor av hanteraren , och tillÀmpningen av arkitekturspecifika instÀllningar görs av hanteraren , men kopplingen av filer med kod görs i filen «.bp».
cc_library {
âŠ
srcs: [«generic.cpp»],
arch: {
arm: {
srcs: [«arm.cpp»],
},
x86: {
srcs: [«x86.cpp»],
},
},
}
KĂ€lla: opennet.ru
