java - 当我包含 header 时,Gradle 将不会构建可执行文件

标签 java c++ gradle build executable

我正在用 gradle 作为 native 二进制构建工具进行实验,我遇到了一个我似乎无法弄清楚的最奇怪的问题。如果我从 gradle.build 中删除包含目录,我会得到一个 exe 就好了(当然注释掉方法调用),但是当我包含头目录时,它说它构建得很好,没有问题,但我没有不再是可执行文件了。我尝试了几种不同的设置,但似乎每个人都说这应该可行。外部库加载良好。它的行为就好像它只是不想使用包含进行编译。

main.cpp

#include <iostream>

#include "Chpt_1.h"

int main(){
    std::cout << "Hello, world!" << std::endl;

    Chpt_1.count();
    return 0;
}

Chat_1.h

#ifndef CHPT_1_H
#define CHPT_1_H

#include <iostream>

int count() {
    std::cout << "Count!" << std::endl;

    return 0;
}

#endif

构建.gradle:

apply plugin: 'cpp'

model {
    components {
        main(NativeExecutableSpec) {
            sources {
                cpp {
                    source {
                        srcDir "src/main/cpp"
                        include "src/main/headers"
                    }
                }
            }
        }
    }
}

目录结构

Shards

build.gradle
[other misc files]
-src
--main
---cpp
----main.cpp
---headers
----Chpt_1.h

最佳答案

回答得很晚,但也许对其他人有帮助。

您的 gradle.build 应在“sources”部分指定源文件。我找不到定义单独的“包含”目录的方法。但您尝试的方式并没有达到预期的效果。 将来源更改为

sources {
    cpp {
        source {
            srcDir "src/main/cpp"
            include "**/*.cpp"
        }
    }
}

Gradle只会编译src/main/cpp中的cpp文件。

所有包含文件都必须相对于源目录导入。例如

#include "../includes/Chpt_1.h"

或者将包含文件复制到同一目录。

关于java - 当我包含 header 时,Gradle 将不会构建可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33489734/

相关文章:

eclipse - Java中的Gradle插件

gradle - 如何从Gradle distZip任务中排除除一个特定jar之外的所有jar?

maven - 使用没有 pom 文件的 Maven 存储库

java - RxJava noClassDefFoundError : rx. plugins.RxJavaPlugins on API 16

java - 如何输入 xPath 表达式 (Java)

java - 删除 Eclipse 中行左侧的绿色十字

c++ - delete[] 是否适用于通用数组?如果是这样,为什么在其上使用 std::vector::erase 会导致释放内存时出错

c++ - '函数式转换' : illegal as right side of '.' operator

java - 默认日期年份设置为 1970

c++ - 在 Linux 上找不到命令系统 ("pause")