这一节教程就非常轻松了,要生成Library,只需要调用add_library即可
- lib.cpp
void add(int a, int b){
return a + b;
}
- lib.h
void add(int a, int b);
- CMakeLists.txt
set(lib "lib")
project(${lib})
add_library(${lib} ./lib.cpp ./lib.h)
生成的对应ide工程结构如下:
查看属性,发现项目配置类型的确是一个lib
如果你仔细观察输出目录,你会发现它是一个绝对路径,如果你对vs非常了解,一般这种路径,大家都会默认使用vs提供的宏变量,这样有一个好处,就是你把项目复制给别人,避免了绝对路径不一致的问题,那么为什么cmake生成的IDE项目不也使用宏变量呢?
原因是我们只需要CMakeLists.txt加入版本控制就能生成应用程序,IDE项目只是提供了一种可视化,因为IDE项目我们是不需要纳入版本管理的,所以也就没有必要使用宏了。
无论是通过ide编译项目,还是使用cmake命令行编译项目(后续教程有详细介绍),都能生成lib.lib文件,就是这么简单。
add_library(
<name> [STATIC | SHARED | MODULE]
[EXCLUDE_FROM_ALL]
[<source>...]
)
当然add_library还能生成动态库,在本章节,并不想展开讲解。
大部分的项目都离不开动态库、静态库,而且lib也区分debug/release版本,添加编译选项,依赖项目还需要添加lib search path、lib head search path,让ide项目结构更加工程化,最后发布应用程序的时候,copy动态库到运行目录,等等类似的需求,cmake都能支持,在以后的教程中会逐步深入介绍,一大波干货即将到来,没有上车的抓紧了。