从代码模块化的角度,往往需要将一个系统工程拆分成很多小的模块,编译成库函数也是很好的方法。
编译库函数的时候,可以选择编译成静态库或者动态库。静态库对应.a文件,动态库对应.so文件。
还是以冒泡排序为例加以说明。
编写StaticBubble.h头文件,里面定义函数但是不实现。路径在系统工程下的include文件夹下。
using namespace std;
void bubbleSort(int array[], int num);
在系统工程下的src文件夹下创建StaticBubble.cpp文件,用于实现上面头文件中定义的函数。
#include
using namespace std;
void bubbleSort(int array[], int num){
for(int i = 0; i < num; i++){
for(int j = 0; j < num - i - 1; j++){
if(array[j] > array[j + 1]){
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
在src文件夹下创建测试程序testBubble.cpp,里面需要包含main函数。
#include
#include
using namespace std;
int main(int argc, char **argv){
int array[5] = {32,54,38,65,98};
bubbleSort(array, 5);
for(int i = 0; i < 5; i++){
cout << array[i] << '\t';
}
cout << endl;
}
最后编写CMakelist:
cmake_minimum_required(VERSION 3.7)
project(Static_Lib)
set(CMAKE_CXX_STANDARD 11)
include_directories(include)
add_library(StaticBubble STATIC src/StaticBubble.cpp) #STATIC or SHARED
#set(SOURCE_FILES include/StaticBubble.h src/testBubble.cpp src/StaticBubble.cpp)
add_executable(Static_Lib src/testBubble.cpp)
target_link_libraries(Static_Lib StaticBubble)
运行即可。