C++ 如何让Doxygen知道CUDA内核调用?
我正试图用Doxygen记录一个用CUDAC编写的项目。文档工作正常。但是,调用程序图不包括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){
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