我正在用 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/