我尝试使用gradle
创建两个本机可执行文件。代码是用cpp编写的,到目前为止,这个过程是使用makefile完成的。
我在尝试创建可执行文件时遇到了一个问题,因为它们本身没有任何源代码,只是通过链接其他一些库来创建。
看一下makefile中生成可执行文件的行,以便更好地理解:
link.exe <linker flags> lib1.obj lib2.obj lib3.obj /out:my_executable_1.exe
link.exe <linker flags> lib1.obj lib4.obj /out:my_executable_2.exe
现在我已经完成了以下工作:
model {
components {
lib1(NativeLibrarySpec) {}
lib2(NativeLibrarySpec) {}
lib3(NativeLibrarySpec) {}
lib4(NativeLibrarySpec) {}
my_executable_1(NativeExecutableSpec) {
sources {
cpp {
lib library: 'lib1', linkage: 'static'
lib library: 'lib2', linkage: 'static'
lib library: 'lib3', linkage: 'static'
}
}
}
my_executable_2(NativeExecutableSpec) {
sources {
cpp {
lib library: 'lib1', linkage: 'static'
lib library: 'lib4', linkage: 'static'
}
}
}
}
}
当我运行my_executable_1Executable任务时,正在正确创建静态库但我没有输出可执行文件,因为它始终显示:
:linkMy_executable_1Executable UP-TO-DATE
:my_executable_1Executable UP-TO-DATE
任何人都知道如何使这项工作?我是否必须在gradle配置中指定任何特殊内容?
我必须承认,在这个特定情况下,文档对我没那么大帮助。
答案 0 :(得分:0)
我的情况几乎相同,只是我尝试从一组静态库构建共享库。我使用gradle 2.10。
我可以确认gradle将二进制文件与&#39;虚拟cpp文件链接在一起。在相应的源集中,但这是一个丑陋的黑客,我认为这应该立即工作没有任何问题。 (就像使用make文件一样简单......)