使用gcc-11构建c++20模块时如何修改gcm.cache路径?

eufgjt7s  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(143)

我正在尝试让xmake支持gcc-11来构建c++20模块,但是我遇到了一些问题。
gcc-11默认会在当前目录下生成gcm.cache目录,如何将此默认路径修改为指定的其他目录?
我知道clang有一个-fmodules-cache-path=选项来修改模块该高速缓存路径,但是我没有为gcc找到类似的选项。
有人知道吗?谢谢

e4yzc0pl

e4yzc0pl1#

这对我在ubuntu 22.04(Makefile片段)上的gcc-11很有效:

MAPPER_DIR := /path/to/obj/dir

CXXFLAGS += -fmodules-ts '-fmodule-mapper=|@g++-mapper-server -r'$(MAPPER_DIR)

我遇到的警告是g++-mapper-server不会创建根目录,所以要确保先创建根目录。您仍然需要确定依赖关系,以便在编译导入代码之前创建/更新gcm。
解释是|通过管道调用Map器进程,@从gcc工具目录(cf gcc manual)解析进程名称。-r选项设置根目录。注意保护空格和|不受make和shell的影响。
默认的mapper服务器接受参数--你可以调整和使用它--下面是我的版本中的选项:

$ /usr/lib/gcc/x86_64-linux-gnu/11/g++-mapper-server --help
Usage: g++-mapper-server [OPTION...] [CONNECTION] [MAPPINGS...] 

C++ Module Mapper.

  -a, --accept     Netmask to accept from
  -f, --fallback   Use fallback for missing mappings
  -h, --help       Print this help, then exit
  -n, --noisy      Print progress messages
  -1, --one        One connection and then exit
  -r, --root DIR   Root compiled module directory
  -s, --sequential Process connections sequentially
  -v, --version    Print version number, then exit
Send SIGTERM(15) to terminate

For bug reporting instructions, please see:
<file:///usr/share/doc/gcc-11/README.Bugs>.

相关问题