C++ 如何让Doxygen知道CUDA内核调用?

C++ 如何让Doxygen知道CUDA内核调用?,c++,c,cuda,doxygen,C++,C,Cuda,Doxygen,我正试图用Doxygen记录一个用CUDAC编写的项目。文档工作正常。但是,调用程序图不包括GPU\u foo()中的内核调用 例如,在这个简单的示例中: #include<stdio.h> /*! * @brief global hello foo */ __global__ void global_hello(void){ printf("Hello\n"); } /*! * @brief CPU hello foo */ void hello(void){

我正试图用Doxygen记录一个用CUDAC编写的项目。文档工作正常。但是,调用程序图不包括
GPU\u foo()
中的内核调用

例如,在这个简单的示例中:

#include<stdio.h>

/*!
 * @brief global hello foo
 */
__global__ void global_hello(void){

printf("Hello\n");

}


/*!
 * @brief CPU hello foo
 */
void hello(void){

printf("Hello\n");
}

/*!
 * @brief main
 */
int main(){

 hello();

 global_hello<<<1,1>>>();

return 0;
}
查看生成的文档时,调用图如下所示:

main -----> hello
而不是期望的:

      ------> global_hello
    /
main
    \
      ------> hello
如何让Doxygen知道CUDA内核调用

问题是Doxygen不知道包含“>”的行是函数调用。我不需要调用图来区分函数调用和内核调用。如果解析器将内核视为正常的函数调用就足够了

总结。有没有办法告诉Doxygen将带有as函数调用的行解释为?
有人建议更改Doxygen的内部解析器方法,该如何做?

如果Doxygen无法识别CUDA函数,那么您也无能为力:

引用:

注意 调用图的完整性(和正确性)取决于并不完美的doxygen代码解析器


而且doxygen的代码解析器不容易扩展。

实现这一点的途径是什么?我想我不是唯一一个尝试制作这种调用图的人。有没有一种方法可以简单地告诉Doxygen忽略>操作符?@user251417:正如我所说,“Doxygen的代码解析器不容易扩展”,这意味着您必须通过更改其源代码来更改doxygens代码解析器内部的工作方式。如果您在Doxygen文件中添加一个特定的
扩展映射
,该怎么办,例如,我认为默认情况下,Doxygen将未知扩展视为C。但是添加“EXTENSION_MAPPING=cu=C++”或cu=C会产生相同的结果,函数的正确文档,但调用程序图不正确。
      ------> global_hello
    /
main
    \
      ------> hello