1. CMake 系列

摘要:
目录1.文件目录结构2.库文件源代码3.编译和生成库文件1.文件目录架构首先创建以下目录结构:L-libг--build#г--CMakeLists。txt L--src#г--添加。cг——添加。h从上面的结构中,我们可以看到,博主希望通过简单的加法实现一个库。

目录

1. 文件目录结构

首先创建如下目录结构

└── lib
    ├── build # 
    ├── CMakeLists.txt
    └── src # 
        ├── add.c
        └── add.h

从上面的结构,可以看出博主想实现一个具备简单加法的库。

build:存放cmake生成的makefile文件,make编译生成的中间文件。

CMakeLists.txt:使用cmake语法编写相关指令,用于生成makefile

src:库文件的源代码

2. 库文件源代码

add.h

#ifndef _ADD_H
#define _ADD_H

int add(const int a, const int b);

#endif

add.c

#include "add.h"

int add(const int a, const int b)
{
    return a+b;
}

3. 编译生成库文件

CMakeLists.txt

# 指定cmake最小版本
cmake_minimum_required(VERSION 2.6) 

project(add)

message("Project Name: " ${PROJECT_NAME})

#设置编译参数
set(CMAKE_C_FLAGS "-g -Wall")

#设置库文件文件输出目录
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)


#递归获取目录下所有的C文件
file(GLOB_RECURSE c_files ${PROJECT_SOURCE_DIR}/src/*.c)

#生成动态库和静态库
add_library(add_lib_shared  SHARED ${c_files})
add_library(add_lib_static STATIC ${c_files})

#将动态库和静态库的名字设置为 add
set_target_properties(add_lib_shared PROPERTIES OUTPUT_NAME "add")
set_target_properties(add_lib_static PROPERTIES OUTPUT_NAME "add")

#设置动态库版本
set_target_properties(add_lib_shared PROPERTIES VERSION 1.0 SOVERSION 1)

编译

$ cd build
$ cmake ..
$ make
$ cd ..
$ tree lib

效果如下

lib
├── libadd.a
├── libadd.so -> libadd.so.1
├── libadd.so.1 -> libadd.so.1.0
└── libadd.so.1.0

免责声明:文章转载自《1. CMake 系列》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Ubuntu下设置开机自动挂载硬盘python下进行10进制转16进制不带0x并且将16进制转成小端序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux 下 奇怪的 动态库 依赖问题

 转:http://fanwei51880.blog.163.com/blog/static/3240674020111145285375/   总结如下:1)当你在编译生成静态库的时候, 只需要相应的依赖库库的头文件即可. 只有在你想生成so,或可执行文件 时, 才需要lib库.   对于你没有用到的lib, 但是不包含又编译失败, 那么只包含其头文件即...

centos7下Zookeeper+sheepdog集群搭建

zookeeper 安装命令 yum install zookeeper -y            (版本:zookeeper.x86_64      3.4.6-1) yum install zookeeper-lib -y            (版本:zookeeper-lib.x86_64   3.4.6-1) 配置文件:/etc/zooke...

iOS 项目优化

前言 iOS性能优化系列篇之“优化总体原则” 不要提前过度优化 要找到性能瓶颈 要在不同性能指标间权衡 要理解优化任务的底层运行机制 要有技术保障体系 一、启动速度优化 1.1 学习文章 WWDC 启动速度优化视频 Session 406 Optimizing App Startup Time iOS性能(二) 启动时间优化 1.2 操作步骤...

Ubuntu中安装Cmake3.22.0

来源:https://www.cnblogs.com/yanqingyang/p/12731855.html 一.使用安装命令 1 sudoaptinstallcmake 注意此种方式安装的可能不是最新版本的Cmake. 二.Cmake源码编译安装 第一步:卸载原来的cmake版本: 1 sudoapt-get remove cmake...

Java导出成可运行Jar包 dll或者so加载失败的解决方案

正常情况下, xxx.class.getResourceAsStream(lib) 这样就可以获取到了。但是我的是在JFrame的初始化中的, 所以需要Thread.currentThread().getContextClassLoader().getResourceAsStream(lib); 这样来获取。   这个坑  找了蛮久才找到解决方案记录下。...

Kettle-linux部署方案

Kettle-linux部署方案 部署过程: 环境准备:jdk1.8,kettle8.1(kettle和jdk版本需要match) 将data-integration.zip解压 # unzip data-integration.zip # cd ./data-integration/ # ./kitchen.sh 问题1.#./kitchen.sh #...