在netbeans中编辑OpenCL

Editing OpenCL in netbeans

本文关键字:OpenCL 编辑 netbeans      更新时间:2023-10-16

我最近在StackOverflow上读到一个关于IDE的问题,因为我一直是emacs用户,所以我决定尝试其中一个IDE,即用于编辑C++的netbeans。这太好了,我有点忘乎所以,想把OpenCL文件编辑成

现在是我的问题。我已经设置了netbeans来处理像C文件这样的opencl源文件,但这会导致一个问题。__kernel关键字使语法检查器的行为非常奇怪。

有人知道如何让netbeans忽略特定(*.cl)文件中的关键字吗?

以下解决方案看起来很有效:

#ifndef tan
#define __kernel
#define __global
#define __local
#define __private
#define get_global_id
#define get_global_size
#define get_local_id
#define get_local_size
#define barrier
#endif 

由于tan是在没有头的情况下定义的,所以netbeans看不到它,并且关键字是可用的。

为了使netbeans忽略关键字,您可以在项目的代码辅助选项中的预处理器定义条目中定义ONLY_DEFINED_IN_NETBEANS,而不在其他地方定义它。然后可以将您的代码修改为

#ifdef ONLY_DEFINED_IN_NETBEANS
#define __kernel
#define __global
#define __local
#define __private
#define get_global_id
#define get_global_size
#define get_local_id
#define get_local_size
#define barrier
#endif

netbeans解析器将忽略这些关键字。

同样的技巧也可以作为补丁应用于__restrict__关键字上netbeans中报告的错误:

#ifdef ONLY_DEFINED_IN_NETBEANS
#define __restrict__
#define restrict
#endif

这不是你想要的答案,但对于临时编辑,只需放置类似的行

#define __kernel
#define __global
#define __local
#define __private

在cl文件的开头。这是在Eclipse中工作的。我认为它在Netbeans中也会起作用。

缺点:您需要注意删除#define语句,否则代码将无法工作。

你可以告诉netbeans的C编辑器完全忽略语法错误,但我认为你不会幸运地教netbeans CL特定的关键字。

工具->选项->C++->构建工具

  • 复制工具配置
  • 给它一个名称并删除编译器的所有路径
  • 使其默认

工具->选项->C++->突出显示

  • 取消选中突出显示语法错误和未解析的标识符