C++与格拉德尔
C++ with gradle
在 Gradle 1.10 发行说明中 http://www.gradle.org/docs/current/release-notes 我看到提到了C++版本。
如何设置C++项目以使用 gradle 构建?(不使用 IDE)
假设我有
ProjectFolder/hello.cpp
ProjectFolder/build.gradle
hello.cpp
:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
puts("Hello World!!!");
return EXIT_SUCCESS;
}
这个C++项目的基本build.gradle
应该是什么?
更新:我已经看过用户指南的第 72 章和提到的 2 年前的例子。他们不会让它变得更简单,而是更复杂。
有 1 个 6 行的文件示例。我已经 10 年没有接触C++了,我只是想快速开始,例如 GCC .(尚未找到)
-
把它放在build.gradle中
apply plugin: 'cpp' executables { hello {} }
-
将源文件放入 src/hello/cpp/say_hello.cpp
-
运行 'gradle helloExecutable'
-
你的可执行文件应该构建为构建/二进制文件/helloExecutable/hello
或者,如果你想让你的源在src/foo/bar中,然后添加
sources {
hello {
cpp {
source {
srcDir "src/foo/bar"
}
}
}
从 Gradle 2.3 开始,原生组件构建发生了重大变化,executables
和libraries
容器不再可用。引用 Gradle 2.3 发行说明:
。用于定义本机可执行文件和库的 DSL 具有 从根本上改变了。可执行文件和库容器具有 已删除,组件现在按类型添加到组件中 模型注册表拥有的容器。另一个重大变化是 组件的源集现在直接在 组件定义,而不是在源上配置 块。
因此,与 Gradle 2.3+ 兼容的更新后的 Gradle 代码如下所示:
model {
components {
hello(NativeExecutableSpec) {
sources {
cpp {
source {
srcDir "src/foo/bar"
}
}
}
}
}
}
您可以在此处的 Gradle 用户指南中了解有关新型号的更多信息。
另一个答案。我正在使用 Gradle 2.4.7。我的源代码是标准C++,如 Windows 上的以下目录结构所示:
我的项目
我的项目\src
myproject\src\main.cpp
myproject\build.gradle
main.cpp只是一个Hello world C++程序。
我有Visual Studio 2015。我喜欢将其C++编译器用于标准C++程序。
build.gradle如下:
apply plugin: 'cpp'
model {
components {
main(NativeExecutableSpec) {
sources {
cpp {
source {
srcDir "src"
}
}
}
}
}
binaries {
all {
if (toolChain in VisualCpp) {
cppCompiler.args "-IC:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt"
linker.args "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x86"
}
}
}
}
额外的编译器选项和链接器选项是由于Visual studio 2015与其以前的版本相比发生了一些变化。如果没有这些选项,您将获得无法找到 corecrt.h 的编译或无法找到 libucrt.lib 的链接器错误。
希望这能帮助你快速开始使用Visual Studio 2015进行C++编译!!
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- 为什么瓦尔格林德在不释放恶意内存后没有报告任何问题?
- 瓦尔格林德的内存泄漏使用新的
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- C++程序什么都不做,但瓦尔格林德显示内存分配
- 赫尔格林德和atomic_flag
- 删除堆后对瓦尔格林德错误感到困惑
- 为什么我会"Invalid read of size 8"?(瓦尔格林德)
- 瓦尔格林德报告在 =带有嵌套shared_ptrs的运算符上的读取错误
- 瓦尔格林德:注意到但未处理的国际奥克特尔;是否有必要处理以及如何找到?
- 瓦尔格林德错误 - 地址0x0不是堆叠的 malloc'd 或自由的
- 瓦尔格林德错误来自 boost::asio
- 瓦尔格林德可能丢失了,仍然可以到达并被瓦尔格林德检测到并被抑制
- 在瓦尔格林德的泄漏摘要中使用 std::ios::sync_with_stdio(fasle) 打印时获取"still reachable"
- 瓦尔格林德"不支持arch_prctl选项"
- 有没有办法只从瓦尔格林德获得泄漏摘要?
- 瓦尔格林德 + --泄漏检查 -> 不泄漏摘要
- 我找不到瓦尔格林德告诉我的记忆链接
- 修复了瓦尔格林德错误内存泄漏的错误
- C++与格拉德尔