仅来自链接库的Gradle NativeExecutable

时间:2015-04-03 09:42:13

标签: c++ gradle makefile native

我尝试使用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配置中指定任何特殊内容?

我必须承认,在这个特定情况下,文档对我没那么大帮助。

1 个答案:

答案 0 :(得分:0)

我的情况几乎相同,只是我尝试从一组静态库构建共享库。我使用gradle 2.10。

我可以确认gradle将二进制文件与&#39;虚拟cpp文件链接在一起。在相应的源集中,但这是一个丑陋的黑客,我认为这应该立即工作没有任何问题。 (就像使用make文件一样简单......)