HelloWorld CMake CMake中构建静态库与动态库及其使用

继续完善Hello World,建立它的共享库, 包括静态库和动态库。

本节的任务:

1,建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc

向终端输出Hello World字符串。

2,安装头文件与共享库。

3, 编写一个程序使用创建的共享库(静态库和动态库)。

cd /home/ccj/CMakeDemo

mkdir t3

cd /backup/cmake/t3

mkdir lib

在t3目录下建立CMakeLists.txt,内容如下:

PROJECT(HELLOLIB)

# 通过在主工程文件CMakeLists.txt中修改ADD_SUBDIRECTORY (lib) 指令来指定一个编译输出位置;

# 指定本工程中静态库libhello.so生成的位置,即 build/lib;

ADD_SUBDIRECTORY(lib)

# 也可以通过变更为其他的位置,如

# ADD_SUBDIRECTORY(lib lib_new)

# 则,静态库libhello.so生成的位置变为 build/lib_new;

在lib目录下建立两个源文件hello.cpp与 hello.h

hello.cpp内容如下:

#include "hello.h"

using namespace std;

void HelloFunc(){

cout << "Hello World/n";

}

hello.h内容如下:

#ifndef HELLO_H

#define HELLO_H

#include <stdio.h>

void HelloFunc();

#endif

在lib目录下建立CMakeLists.txt,内容如下:

注意: 这里我们将Section 7之前的CMakeLists.txt中应有的内容提供如下:

SET (LIBHELLO_SRC hello.cpp)

# SET (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

# three kinds of libraries:

# 1. shared, i.e., dynamic library,动态库文件扩展名常为 "*.so";

# 2. static, i.e., static library, 静态库文件扩展名常为 "*.a";

# 而且,我们通常希望静态库和动态库文件名保持一致,只是扩展名不同;

# 3. module, this parameter is valid only when dyld is supported;

# otherwise, will be considered as shared

# 添加动态库,关键词为shared,你不需要写全libhello.so,

# 只需要填写hello即可,cmake系统会自动为你生成 libhello.X

ADD_LIBRARY (hello SHARED ${LIBHELLO_SRC})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程经验随笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值