还是以往的惯例

See the Pen Abstraction by 攻伤菊菊长 (@THISISAGOODNAME) on CodePen.

       这个demo的效果可能并不怎么样,重点是这个demo对于jade和sass的使用。虽然Jade模板只有寥寥数行,但是编译后有几百行(应该是一目了然),而仅有不足百行的scss,编译后产生的css可能超过5千行(且未使用susy,compass等模块)

起因

       cmake小白觉得每个库都要配置一个_INCLUDE_DIR变量和一个_LIBRARY(或_LIBRARIES)变量太过蛋疼

技巧

include({name})

        include()函数的作用其实和其他语言的include()函数相同,就是把另一个文件中的内容在这个位置置换。

       但是,cmake为我们提供了很多优秀方便的模块。定义在cmake/shader/Moudules下,模块可以在目录中查看,也可以上网查阅文档,比如3.5.1版本的自带模块,常用的库,比如openCL、openGL、openAL、lua、SSL、TK家族、CUDA等都可以直接配置使用,不再蛋疼

       举个实例

include(FindGLUT)
include(FindOpenGL)

GLUT & opengl

不要纠结于cmake命令的大小写问题,cmake配置文件不区分大小写

       可以看到,cmake自动配置了GLUT和openGL以及GLU

       实例2

include(FindBoost)
include(FindBullet)

boost & bullet

       这次,cmake配置好了boost库和bullet引擎

find_package({name})

       前文叙述了include()引入模块的方法,但是,include()有一个显著的缺点,就是只能导入模块。对于模块定义之外的库/框架,可以选择自己写一个模块,或者干瞪眼。

       find_package({name})就是cmake专门用来处理依赖问题的神器。find_package()能解决包括但不限于include()能解决的依赖问题。include()虽然很全了,但是依然有些不支持,比如glfw、opencv、oss。而find_package()则是查找本机上已经安装的库/框架,比如

find_package(sdl2)
find_package(opencv)

opencv & sdl2

include()中没有sdl2模块,但是有sdl模块

       依靠find_package({name})这个神器,常用类库在clion中配置,不再蛋疼,23333