首页 > 解决方案 > 如何在 C++ 中使用 gradle 添加仅标头依赖项

问题描述

我使用 gradle 创建了一个 c++ 多项目。我有一个仅包含 c++ 模板类的子项目。现在我想将这些模板类用作我的另一个子项目的依赖项。

已经尝试通过使用“cpp-library”插件并通过 gradle 使用实现依赖项来定义仅标头项目,但正如我已经知道的那样,因为头文件实际上是模板类,因此没有生成二进制文件。所以没有运气。我还检查了https://github.com/gradle/native-samples/tree/37abb6a6a51bb2075fcc9ffbf15a3d396a3fbd88/cpp/header-only-library中的示例, 但他们只定义了一个独立的项目,该项目运行单元测试而没有任何其他项目依赖在上面。(如果我没有记错的话)

所以想要使用模板类的主要功能如下:

#include <stdio.h>
#include <iostream>

#include "MyStack.hpp"

using namespace std;

int main() {
    try {
        MyStack<int> myList;

其中MyStack是另一个子项目中存在的模板类,build.gradle.kts文件如下:

plugins {
    `cpp-application`
}

application {
    targetMachines.add(machines.linux.x86_64)

    dependencies {
        implementation(project(":MyStack"))
    }
}

仅标头项目具有以下 build.gradle.kts 文件:

    `cpp-library`
}

library {
    targetMachines.add(machines.linux.x86_64)
    linkage.set(listOf(Linkage.STATIC))
}

如上所述,这是行不通的,因为源文件是模板文件,无法编译和链接。

有没有办法通过使用 gradle 来克服这种情况?

标签: c++gradle

解决方案


推荐阅读