为啥攒库
最近越来越感觉到攒库的重要性。
之前编写cmake的时候并没有太注意攒库的重要性,导致每次起一个新的工程都花了大量的时间在做基础工程。
实际上这些基础工程都写了好多遍。我的主要做法参考了知乎上面Ubpa老哥的做法。首先,在cmake库里面编写了下载相关的函数,以及快捷添加目标的函数。
具体做法
cmake库也是很有用的库!
在任意的工程下面,可以先对这个cmake库进行拉取:
自己写的库作为子模块
将自己攒的库作为子模块加入cmake中,并且自动添加target。
所有第三方库加到自己的专门的repo
而第三方的库我直接做了一个第三方库的repo,用于直接拉取并且使用。
当我要使用的时候我直接调用这个函数即可直接引用这个库
通过匹配CMakeLists找到所有的Target
这个技巧可以帮助我们调用一个函数找到所有的Target。但是它的问题在于如果被包含的CMakeLists.txt中也调用了这个函数,就会出现问题。
所以我添加了一个判断,也就是在InitProject的时候会将最先Init的那个Project作为Root,判断当前工程是否为Root。如果为Root则进行AddSubDirectory,否则的话Skip这个操作。
目前已经攒和准备攒的库
个人库:
- cmake库
- 数学库
- Template库(开发中)
- Common库(开发中)
- OpenGL库(开发中)
- DX12库(开发中)
第三方库
- fmt
- spdlog
- glad
- glew
- glfw
- rapidjson
- tinyxml
- stb_image
- lua
- tinydir
- imgui
总结
有了攒库的思路之后,之后做很多事情可以事半功倍。
就像之前开发C#一样当时攒了一个ResetCore用来开发自己的玩具。
现在C++的终于可以攒起来了。不像之前这里写一点那里写一点、