c++ - 如何在 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 来克服这种情况?
解决方案
推荐阅读
- python - python sqlalchemy遍历查询并插入表
- android - 在 Git 提交后,Android Studio 失去了代码顺序
- java - 如何更正我的 mvn:exec commande 以了解我的 jdbc 驱动程序?
- c - strcmp (AIX,Linux Redhat) 不同的行为
- video - 如何解决使用ffmpeg生成复杂视频性能低的问题?
- javascript - 将 sql 查询解析为 JSON
- css - 如何将所有元素的样式恢复为默认值?
- android - Frida - 打印类的静态变量
- python - 在 mac 上安装图形工具后,我得到 ValueError: Namespace Gtk not available
- python-3.x - 如何按照我要求的方式取消透视或堆叠 pandas 数据框?