静态库和动态库的构建
本节任务:
建立一个静态库和动态库,提供HelloFunc函数供其他程序使用,HelloFunc向终端输出Hello World.安装头文件与共享库。
1、建立t3目录
2、建立共享库
cd t3
mkdir lib
在t3目录下建立CMakeLists.txt内容如下
PROJECT(HELLOLIB)
ADD_SUBDIRECTORY(lib)
在lib目录下建立源文件hello.c hello.h
hello.c
#include"hello.h"
void HelloFunc()
{
printf("Hello World\n");
}
hello.h
#ifndef HELLO_H
#define HELLO_H
#include <stdio.h>
void HelloFunc();
#endif
在lib目录下建立CMakelists.txt
SET(LIBHELLO_SRC hello.c)
ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC})//动态库
ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC})//静态库
//hello_static 名字改为hello
SET_TARGET_PROPERTIES(hello_static PROPERTIES OUTPUT_NAME "hello")//设置输出的名字
GET_TARGET_PROPERTY(OUTPUT_VALUE hello_static OUTPUT_NAME)
MESSAGE(STATUS "This is the hello_static OUTPUT_NAME" ${OUTPUT_VALUE})
//避免编译的时候清楚
SET_TARGET_PROPERTIES(hello PROPERTIES CLEAN_DIRECT_OUTPUT 1 )
SET_TARGET_PROPERTIES(hello_static PROPERTIES CLEAN_DIRECT_OUTPUT 1 )
//版本号
SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.2 SOVERSION 1)
//安装
INSTALL(TARGETS hello hello_static
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
INSTALL(FILES hello.h DESTINATION include/hello)