Früher hatte ich Header, die so aussahen:
Code: Select all
#include "glm/vec2.h"
struct Foo
{
glm::vec2 myvec;
};
Anstatt die GLM-Header einzuschließen, habe ich mich nun entschieden, eine glm_module.cppm zu erstellen und die Vektor-Typedefs zu exportieren, also habe ich:
Code: Select all
module;
#include "glm/vec2.h"
export module glm_module;
export using myvec2 = glm::vec2;
Und das ist eine ziemlich gewöhnliche Konvertierung in Module. Und es funktioniert. Da sich meine Vektortypen jedoch jetzt in einem Modul und nicht in den einzubindenden Headern befinden, möchte ich jetzt natürlich in meiner Header-Datei Folgendes haben:
Code: Select all
//#include "glm/vec2.h" // REMOVE THIS, NO LONGER INCLUDING
import glm_module;
class Foo
{
myvec2 myvector;
};
Nun, ich denke, das ist in Ordnung, aber dieser Header, der Foo enthält, stellen Sie sich vor, ich möchte diesen Header jetzt in ein Modul einbinden. SomeOtherModule.cppm:
Code: Select all
module;
#include "header_which_defines_foo.h"
export module SomeOtherModule;
Da „header_which_defines_foo.h“ nun „glm_module importieren“ ausführt, importiere ich im Wesentlichen glm_module im globalen Modulfragment:
Code: Select all
module;
#include "header_which_defines_foo.h" // THIS IS THE GLOBAL MODULE FRAGMENT
export module SomeOtherModule;
Und ich habe gehört, dass Sie das globale Modulfragment nicht
importieren können. Ist das nicht möglich?