一个程序通常会按照功能需求,进行一定的划分,拆分成不同的子功能,子功能一般会被编译成库,每个库可能包含多个源文件和头文件,并且由不同的人同时进行开发。
可以使用add_library完成静态库和动态的编译:
程序文件结构如下:
├── build
├── CMakeLists.txt
├── install
├── lib_o
│ ├── CMakeLists.txt
│ ├── lib_o.c
│ └── lib_o.h
├── lib_so
│ ├── CMakeLists.txt
│ ├── lib_so.c
│ └── lib_so.h
└── m.c
其中lib_o会被编译为静态库:
//lib_o.h
void call_lib_o();
//lib_o.c
#include <stdio.h>
#include "lib_o.h"
void call_lib_o()
{
printf("this is call_lib_o\n");
}
#CMakeLists.txt in lib_o
#aux_source_directory将当前目录下的所有源文件名字放入变量O_SRCS
aux_source_directory(. O_SRCS)
#add_library指令用于编译库,STATIC表示是静态库
add_library(lib_o