From: Andrew Jones <andrewvaughanj@gmail.com>
To: Alexander Christensen <alex_c007@hotmail.com>
Cc: gcc-help@gcc.gnu.org
Subject: Re: C++20 module mapper
Date: Tue, 19 Oct 2021 23:48:24 +0100 [thread overview]
Message-ID: <CADjetuQ-akXT7QyL8eqbYP6_1LuwRukVitMwzSVRLZ3bzTQPdQ@mail.gmail.com> (raw)
In-Reply-To: <AM0PR09MB4291BC30DF53A60DBAA2FED9D4BD9@AM0PR09MB4291.eurprd09.prod.outlook.com>
Hi Alexander,
(re-added gcc-help in case this response piques any wider interests)
Ah, sorry, I'd misunderstood your original question then; I've never
used `-fmodules-cache-path` with `clang` -- does this allow you
specify where the `.pcm`s go (rather than the current working
directory)? That is, that `-emit-module-interface` automatically emits
into `-fmodules-cache-path`? If so, with what name?
Nonetheless, I am unaware of any such functionality inside of gcc to
match this, without, of course, writing your own mapper (which you
don't want to do). What you've done with symlinks clearly achieves it,
but I'm not sure if that's better/worse than writing to a mapper file.
As far as I know, making the mapper file is also the approach that
CMake takes: https://github.com/Kitware/CMake/blob/master/Help/dev/experimental.rst
Cheers,
Andrew
On Tue, Oct 19, 2021 at 6:24 PM Alexander Christensen
<alex_c007@hotmail.com> wrote:
>
> Hi Andrew,
>
> Thank you for the fast reply, and helpful source.
> Though that did not actually answer my question.
>
> I wanted to know if we could use the module mapping file with gcc to simulate what the flag "-fmodules-cache-path"
> (presumable) does for clang?
>
> The syntax "<$root ??> ../gcm.cache" (or permutations thereof) seems to have no effect.
> And I do not want to specify explicit mapping for each module.
> Much rather, I would like to use the default cache, but at a different location, both for reading and writing.
>
> My current hack involves symlinks as here: https://github.com/alexpanter/modules_testing/blob/master/gcc-testing/test_07_gameengine/init.sh
>
> Would you happen to know about that?
>
> Kind regards,
> Alexander
>
> ________________________________
> Fra: Andrew Jones <andrewvaughanj@gmail.com>
> Sendt: 19. oktober 2021 18:45
> Til: Alexander Christensen <alex_c007@hotmail.com>
> Cc: gcc-help@gcc.gnu.org <gcc-help@gcc.gnu.org>
> Emne: Re: C++20 module mapper
>
> Hi Alexander,
>
> Actually, I've done some work on this:
>
> https://github.com/andrewvaughanj/cpp20_module_examples
>
> and more specifically:
>
> https://github.com/andrewvaughanj/cpp20_module_examples/blob/main/do_gcc.sh
>
> Please take a look and feel free to ask if you have any questions -- cheers,
>
> Andrew
>
> On Tue, Oct 19, 2021 at 4:58 PM Alexander Christensen via Gcc-help
> <gcc-help@gcc.gnu.org> wrote:
> >
> > Hi, I hope I write to the right place.
> >
> > I would like to know how to use the module mapper, documented here https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Module-Mapper.html,
> > to change the location of the expected gcm.cache directory. Given an example project layout:
> >
> > src/
> > Makefile
> > project_1/
> > // .cpp source files
> > Makefile
> > project_2/
> > // .cpp source files
> > Makefile
> >
> > Compiling from inside project_1 and project_2 folders does not work with the default module mapper, as gcc expects the module cache
> > to be located in current working directory, which is a problem if project_2 references modules built in project_1.
> > However, I can specify a module-mapping file. But I can't get it to work.
> >
> > What would be the correct syntax for such a file, located in project_2, to override the default module cache to read from modules in
> > src/gcm.cache/ and NOT src/project_2/gcm.cache/ ? This does not work:
> >
> > // module_mapping.txt
> > '$root' ../gcm.cache/
> >
> > And I do not want to prepend "cd .. && " to all build commands in src/project_2/Makefile.
> >
> >
> > Sincerely,
> > Alexander
> >
prev parent reply other threads:[~2021-10-19 22:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-19 15:58 Alexander Christensen
2021-10-19 16:45 ` Andrew Jones
[not found] ` <AM0PR09MB4291BC30DF53A60DBAA2FED9D4BD9@AM0PR09MB4291.eurprd09.prod.outlook.com>
2021-10-19 22:48 ` Andrew Jones [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CADjetuQ-akXT7QyL8eqbYP6_1LuwRukVitMwzSVRLZ3bzTQPdQ@mail.gmail.com \
--to=andrewvaughanj@gmail.com \
--cc=alex_c007@hotmail.com \
--cc=gcc-help@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).