zoukankan      html  css  js  c++  java
  • 1. CMake 系列

    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
    
    出处:https://www.cnblogs.com/standardzero/p/10781227.html
  • 相关阅读:
    ⑥nginx location
    ③nginx 多虚拟主机配置
    ①nginx 安装简介
    11.ansible 角色
    10.ansible 标签功能 触发功能 忽略远程主机采集
    9.ansible 循环功能和忽略错误
    8.ansible 判断功能
    7.ansible在剧本中注册信息
    6.ansible变量
    5.ansible 剧本编写规范
  • 原文地址:https://www.cnblogs.com/jingsupo/p/12194144.html
Copyright © 2011-2022 走看看