从代码模块化的角度,往往需要将一个系统工程拆分成很多小的模块,编译成库函数也是很好的方法。
编译库函数的时候,可以选择编译成静态库或者动态库。静态库对应.a文件,动态库对应.so文件。
还是以冒泡排序为例加以说明。
编写StaticBubble.h头文件,里面定义函数但是不实现。路径在系统工程下的include文件夹下。
using namespace std;
void bubbleSort(int array[], int num);在系统工程下的src文件夹下创建StaticBubble.cpp文件,用于实现上面头文件中定义的函数。
#include <iostream>
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 <iostream>
#include <StaticBubble.h>
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)上面add_library中可以选择STATIC或者缺省,代表编译成静态库,即.a文件;选择SHARED时,编译成动态库。
运行即可。
本文通过冒泡排序示例介绍了如何将代码模块化并编译为静态库(.a)和动态库(.so)。详细展示了从头文件定义到实现文件、测试程序直至CMakeLists配置的完整流程。
374

被折叠的 条评论
为什么被折叠?



