用Gradle构建Ada
我很难和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文件:用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”:没有可
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会构建中断的命令行,并停止它这样做。