CMakelist编译静态库和动态库

从代码模块化的角度,往往需要将一个系统工程拆分成很多小的模块,编译成库函数也是很好的方法。

编译库函数的时候,可以选择编译成静态库或者动态库。静态库对应.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时,编译成动态库。

运行即可。








猜你喜欢

转载自blog.csdn.net/QTVLC/article/details/83021383