用Gradle构建Ada

用Gradle构建Ada,gradle,build.gradle,ada,gradlew,Gradle,Build.gradle,Ada,Gradlew,我很难和Gradle建立Ada。我认为这应该不会太难,因为Ada是使用GCC和Ada编译器构建的,但我错了。我已经在互联网和Gradle的文档中搜索过了,但还没有找到解决方案 这是我在运行./gradlew build、./gradlew compileCalExecutableCalcc或./gradlew CalceExecutable(我的Ada文件称为calc.adb)时的错误 任务“:汇编”的执行失败。 未找到可构建的二进制文件: -可执行文件“calc:executable”:没有可

我很难和Gradle建立Ada。我认为这应该不会太难,因为Ada是使用GCC和Ada编译器构建的,但我错了。我已经在互联网和Gradle的文档中搜索过了,但还没有找到解决方案

这是我在运行./gradlew build、./gradlew compileCalExecutableCalcc或./gradlew CalceExecutable(我的Ada文件称为calc.adb)时的错误

任务“:汇编”的执行失败。 未找到可构建的二进制文件: -可执行文件“calc:executable”:没有可用于为平台“linux_x86-64”生成的工具链: -工具链“gnat”(GNU GCC):无法确定GCC元数据:未能执行gnatmake-dM-E-v-。 -工具链“gnat_clang”(clang):无法确定clang元数据:无法执行gnatmake-dM-E-v-

这是我的build.gradle文件:

apply plugin: 'c'
model{
    toolChains{
        gnat(Gcc){ // Gradle doesn't have an Ada toolchain, so we're creating a custom toolchain
            target("linux_x86-64"){
                path '/usr/bin'
                cCompiler.executable = 'gnatmake'
                cCompiler.withArguments{ args ->
                    Collections.replaceAll(args, "CUSTOM", '-f', '-u',     '-c')
            } // end cCompiler.withArguments
        } // end target()
    } // end gnat
    gnat_clang(Clang){
         target("linux_x86-64") {
            path '/usr/bin'
            cCompiler.executable = 'gnatmake'
            cCompiler.withArguments{ args ->
                Collections.replaceAll(args, "CUSTOM", '-f', '-u', '-c')
            }
        } // end target
    } // end gnat_clang
} // end toolChains
components{
    calc(NativeExecutableSpec){
        binaries.all{
            cCompiler.args "-f", "-u", "-c", "calc.adb"
        } // end binaries.all

        sources{
            c.source.srcDirs = ['src/']
            c.source.includes = ['**/calc.adb']
        }
    } // end calc
} // end components
} // end model
我的Gradle和Gradle包装器版本是4.7,Groovy版本是2.4.12

更新:

格雷德尔现在认出了新的旗帜。以下是更新的build.gradle:

apply plugin: 'c'
model{
    toolChains{
        gnat(Gcc){ // Gradle doesn't have an Ada toolchain, so we're creating a custom toolchain
            target("linux_x86-64"){
                path '/usr/bin'
                cCompiler.executable = 'gnatmake'
                cCompiler.withArguments{ args ->
                   Collections.replaceAll(args, "CUSTOM", "-dM -E -v -.")
            } // end cCompiler.withArguments
        } // end target()
    } // end gnat
} // end toolChains
components{
    calc(NativeExecutableSpec){
        sources{
            c.source.srcDirs = ['src/']
            c.source.includes = ['**/calc.adb']
        }
    } // end calc
} // end components
} // end model
现在Gradle正在滔滔不绝地说一个新的错误,我不完全确定如何解决这个问题

没有可用于为平台“linux_x86-64”构建的工具链:
-工具链“gnat”(GNU GCC):无法确定GCC元数据:无法执行gnatmake-dM-E-v-。
-工具链“gnat_clang”(clang):无法确定clang元数据:无法执行gnatmake-dM-E-v-


你真的需要和Ada一起使用gradle吗?至少你可能想尝试gprbuild实用程序,即使是使用gradle。我曾经尝试过使用gprbuild和gradle,但我得到了同样的错误。确切的gnatmake命令行独立工作吗?(哦,在DragonEgg项目产生一些results之前,gnat_Clang部分没有意义)这里,
gnatmake-dM-E-v-hello.adb
给出“gnatmake:switch字符后面不能跟空白”,然后删除该字符给出“无法识别的命令行选项:-.”。删除“-”行得通,所以我认为您需要找出为什么Gradle会构建中断的命令行,并停止它这样做。