Geometric Tools库中有许多几何处理的函数,当自己的VS中的cmake项目要用到Geometric Tools库中的函数时,可以将Geometric Tools库相应中的函数代码拷贝到自己的代码中,但拷贝以后会出现一些参数未定义的错误,为此,需要完成以下注意事项才能让程序正常运行:
1、在CMakeLists.txt中添加Geometric Tools的安装手册(Installation Manual)中要求的预处理符号(通过add_definitions(-D)添加):
add_definitions(-DGTE_USE_MSWINDOWS)
add_definitions(-DGTE_USE_ROW_MAJOR)
add_definitions(-DGTE_USE_MAT_VEC)
add_definitions(-DGTE_USE_OPENGL)
2、在CMakeLists.txt中添加代码所依赖的库(由于本人的Geometric Tools是直接安装在VS的安装路径内,所以添加库时没有在CMakeLists.txt中给出库的路径),有一点要注意的是,除了要添加代码所依赖的GTApplicationsGL45.v16.lib、GTGraphics.v16.lib、GTGraphicsGL45.v16.lib、GTMathematicsGPU.v16.lib这几个Geometric Tools本身的库外,还需要打开自己所拷贝的代码在Geometric Tools中的源码所在的工程,添加这个工程所依赖的其他的库,比如下方的opengl32.lib和Windowscodecs.lib:
target_link_libraries(${PROJECT_NAME} PUBLIC GTApplicationsGL45.v16)
target_link_libraries(${PROJECT_NAME} PUBLIC GTGraphics.v16)
target_link_libraries(${PROJECT_NAME} PUBLIC GTGraphicsGL45.v16)
target_link_libraries(${PROJECT_NAME} PUBLIC GTMathematicsGPU.v16)
target_link_libraries(${PROJECT_NAME} PUBLIC opengl32)
target_link_libraries(${PROJECT_NAME} PUBLIC Windowscodecs)
3、最容易忽视的一点就是,记得要在自己的代码中添加你所拷贝的代码的所依赖的头文件,有可能你所拷贝的代码在Geometric Tools中的所在的文件的头文件被你添加到了自己的代码中,但还是会出现参数未定义的问题,这可能是Geometric Tools中各个文件相互include,从而隐含地include了其他的头文件,所以你需要在你所拷贝的代码在Geometric Tools的源码的工程中查找未定义的参数所在的头文件,然后再include到自己的代码中(比如下方的VertexColorEffect.h和VertexFormat.h就是我自己查找并添加的):
#include <Mathematics/BSplineCurveFit.h>
#include <Mathematics/Vector3.h>
#include <Mathematics/Vector4.h>
#include <Graphics/VertexColorEffect.h>
#include <Graphics/VertexFormat.h>
#include <Graphics/VertexBuffer.h>