首先建立如下目錄結構:
└── 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...