1 CMake 系列 從零構建動態庫和靜態庫

2022-04-25 12:42:03 字數 1619 閱讀 8563

首先建立如下目錄結構

└── lib

├── build #

├── cmakelists.txt

└── src #

├── add.c

└── add.h

從上面的結構,可以看出博主想實現乙個具備簡單加法的庫。

build:存放cmake生成的makefile檔案,make編譯生成的中間檔案。

src:庫檔案的源**

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)

cmakelists.txt

# 指定cmake最小版本

cmake_minimum_required(version 2.6)

project(add)

message("project name: " $)

#設定編譯引數

set(cmake_c_flags "-g -wall")

#設定庫檔案檔案輸出目錄

set(library_output_path $/lib)

#遞迴獲取目錄下所有的c檔案

file(glob_recurse c_files $/src/*.c)

#生成動態庫和靜態庫

add_library(add_lib_shared shared $)

add_library(add_lib_static static $)

#將動態庫和靜態庫的名字設定為 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

出處:

CMake 從入門到崩潰1 CMake 簡介

cmake 是一種工具,它讀入用於描述軟體如何構建的指令碼,cmake 將評估這些指令碼並構建出表達軟體專案的內部結構,如果它處理完這些指令碼並沒有發現錯誤,cmake 將生成用於實際構建專案的構建檔案 可能是指令碼或 ide 工程檔案 cmake 支援多種構建工具,包括一系列命令列構建工具和主流 ...

CMake系列教程1 初始CMake

cmake 是乙個跨平台的安裝 編譯 工具,可以用簡單 統一的語句來描述所有平台的安裝或編譯過程。能夠輸出不同編譯器的 makefile 或 project 檔案。cmake 的使用 cmakelists.txt 作為專案組織檔案,cmake 並非跨平台編譯工具,而是專案構建工具,可以在不同的平台上...

Docker從零構建php nginx

雖然之前也曾用docker環境執行了一些專案,但對於映象這塊還不是很理解,且鑑於網上現成的映象都包含太多用不到的庫,所以決定從零開始構建乙個自己的映象。alpine linux為基礎映象 docker pull gliderlabs alpine alpine linux 映象位址 目前最新的tag...