I understand what a header guard is but I never saw how it is used in bigger projects. I am currently writing an OpenGL abstraction layer and I mostly need to include the same files.

So my first naive approach was to do something like this:

```
#ifndef GUARD_H
#define GUARD_H

#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>

#include <GL/glfw3.h>

#include <glload/gl_core.h>
#include <glload/gll.h>

#endif // GUARD_H

```

So I can just do `#include "guard.h"`. But I realized that this is not a really good solution because what if I want to add a simple include?

Yes I probably could write all my includes in this file but I am also not sure if this is a good idea either.

How would you recommend me to structure my header guards? Can you recommend me any resources?

Update 1: small example

```
test.h

        #ifndef TEST_H
        #define TEST_H

        #include <glm/glm.hpp>
        class test{
        };

        #endif

test1.h
            #ifndef TEST1_H
            #define TEST1_H

            #include <glm/glm.hpp>
            class test1{
            };

        #endif

```

now I included glm in my test class. but what if I want to do something like this.

```
#include "test.h"
#include "test1.h"
int main(){
//...
}

```

Don't I include `#include <glm/glm.hpp>` 2 times in main?