1

初心者の質問で申し訳ありませんが、gradle プロジェクトで動的タスクを defaultTask として指定することに関連する例や質問をまだ見ていません。

では、動的な $boostLibName タスクを defaultTasks として指定するにはどうすればよいでしょうか?

build.gradle

defaultTasks 'whatgoeshere'

ext {
    // The boost directory, which changes according to version
    // there should be a better way to do this
    boostDir = './boost_1_53_0'

    // The list of boost libraries that we want to build
    boostLibs = ['smart_ptr', 'filesystem', 'array.hpp']
}


// Create a task to build each boost library
boostLibs.each { def boostLibName ->
    println boostLibName
    tasks.create(name: boostLibName, dependsOn: aBoostBcp, type: Exec) {

        workingDir project.boostDir

        def b2compiler = 'toolset=' + System.properties['boost_toolset']
        def b2target = '--with-' + boostLibName
        def cmd

        if(System.properties['platform'] == 'windows') {
            //on windows
            cmd = ['cmd', '/c', '.\\b2', b2compiler, b2target] 
        } else {
            //on unix and mac
            cmd = ['./b2', b2compiler, b2target] 
        }

        // set exec commandLine
        //commandLine cmd.split()
        commandLine 'cmd', '/c', 'echo', "Command to execute: $cmd"
    }
}

バックグラウンド

gradle でクロスプラットフォームの Boost C++ ビルドを実装しようとしています。ビルドをブートストラップし、bcp をビルドし、bcp を使用して名前空間をカスタマイズし、最後に、依存する各ブースト ライブラリをビルドします。

4

1 に答える 1

1

それdefaultTasks = boostLibsは であり、 を宣言した後に来なければなりませんboostLibsbuildまたは、に依存するという名前のタスクを宣言し、デフォルト タスクboostLibsを作成することもできます。"build"

他のビルド スクリプトからこれらのプロパティにアクセスする必要がない限り、それらをローカル変数に変換できますdef boostLibs = ...( ext.boostLibs = ....

于 2013-06-07T00:17:25.297 に答える