最近学会Cmake这个编译工具(入门),因此目前接触到的项目也都是通过它来编译, 本地也clone了四五个项目,基本上都用到了boost,今天再次clone项目时发现出了问题, boost下显示为空。为毛???
boost的强大无需多言,但体积也不小, 如果每个项目都用到boost,每个项目都clone一份的话, 对于小容量笔记本来说,肯定炸裂, 今天向山居林老师学了一招,做好笔记。
对于开发者而言,为了解决本地硬盘空间,将常用的三方库单独放在一处,若项目用得到,只需要添加环境变量即可自动索引即可。
具体做法: 本方法仅涉及到setting.cmake文件的修改(是同CMakeLists.txt 共同发挥作用),首先了解一下其结构(不怕跑题了>_<// ) 该文件中使用的最多的语法就是if...elseif...else 和 set;
///////////////////////////////////////////////////////////////////////////////////////////////
#主要是根据不同的系统配置相应版本的文件路径
if(MSVC)
...
elseif(MINGW)
...
elseif(APPLE)
...
else
...
////////////////////////////////////////////////////////////////////////////////////////////
set(DIR_3P "${CMAKE_CURRENT_SOURCE_DIR}/3rd")
此处设置了一个变量 DIR_3P,CMAKE_CURRENT_SOURCE_DIR获取*.setting.cmake所在目录,并获取其下的3rd目录,这种语法与TCL特别相似,不知道有什么关系,如:
set file documentation
set pfile ${file}PS //pfile = documentationPS
此种方法就是设置变量供CMakeLists.txt使用,
/////////////////////////////////////////////////////////////////////////////////////////////
set(BOOST_DIR "D:/Compute/GitCode/3rd/boost1.67")
直接将绝对路径赋值给创建的变量
#set(OCC_DIR "${DIR_3RD_PARTY}/occ.sdk/7.2/vs2017")
需要将变量DIR_3RD_PARTY替换,并获取绝对路径
哎呀晕了晕了~~~ 这种做法的本质就是,减少submodule的创建(这样会每个项目copy一份,占用空间), 稳重的做法是共享三方库,只需将setting.cmake中的路径配置好