Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有没有办法用gcc查询直接模块依赖关系?_C++_Gcc_C++20_C++ Modules - Fatal编程技术网

C++ 有没有办法用gcc查询直接模块依赖关系?

C++ 有没有办法用gcc查询直接模块依赖关系?,c++,gcc,c++20,c++-modules,C++,Gcc,C++20,C++ Modules,给定一个模块 //a-m.cc 出口模块A; 进口B; 进口C; 进口“D.h”; ... 有没有一种调用gcc的方法(类似于-M对头文件所做的),可以列出对其他模块和导入头文件(即B、C和“D.h”)的直接依赖关系?我不知道gcc有什么方法可以做到这一点,但我建议编写一个助手脚本来扩展文件并查找所有名为import的内容,然后,您可能需要使用“和tmpfile -E也适用于clang++,但对于msvc,您需要/E 如果有一种直接的方法可以使用gcc实现这一点,我也很想知道,但是问题出现了

给定一个模块

//a-m.cc
出口模块A;
进口B;
进口C;
进口“D.h”;
...

有没有一种调用gcc的方法(类似于-M对头文件所做的),可以列出对其他模块和导入头文件(即B、C和“D.h”)的直接依赖关系?

我不知道gcc有什么方法可以做到这一点,但我建议编写一个助手脚本来扩展文件并查找所有名为
import
的内容,然后,您可能需要使用
tmpfile
-E
也适用于clang++,但对于msvc,您需要
/E

如果有一种直接的方法可以使用gcc实现这一点,我也很想知道,但是问题出现了:gcc如何知道在哪里查找模块

相反,如果您有一个跟踪每个模块所在位置的构建系统,您可以像使用编译命令一样指定它。(使用clang时,您可以使用
-fmodule file=
指定它,我认为这与gcc相同,但尚未测试过)。至少我在中是这样做的

但我想总结一下我对你问题的回答。 我认为你需要:

  • 展开源文件
  • 查找其中包含
    导入
    导出导入
    导出模块
    的所有文件并对其进行处理