我正在努力加快GLM(OpenGL数学)的编译时间.GLM大量使用C++模板.
这是我到目前为止所尝试的.
math.h #pragma once #includeextern template struct glm::tvec3 ;
math.cpp #include "math.h" template struct glm::tvec3;
然后我有三个使用glm::vec3
模板的文件,glm::vec3
是一个typedef glm::tvec3
.这三个文件a,b,c
看起来几乎相同:
a.cpp, b.cpp, c.cpp #include "math.h" glm::vec3 func() { glm::vec3 a = glm::vec3{1,1,1}; glm::vec3 b = glm::vec3{1,1,1}; return a + b; }
我正在使用显式实例化定义和显式实例化声明.所以文件a,b,c
不应该导致隐式实例化.但编译时间和我不这样做的时间相同.