一, 目錄結構
├── cmakelists.txt
├── include
│ └── shared
│ └── hello.h
└── src
├── hello.cpp
└── main.cpp
* link:cmakelists.txt - contains the cmake commands you wish to run
* link:include/shared/hello.h - the header file to include
* link:src/hello.cpp - a source file to compile
* link:src/main.cpp - the source file with main
二,cmake基本指令碼
cmake_minimum_required(version 3.5)
project(hello_library)
# 根據庫檔案**生成動態庫
add_library(hello_library shared src/hello.cpp)
# 建立動態庫別名
add_library(hello::library alias hello_library)
# 包含指定標頭檔案所在的目錄
target_include_directories(hello_library public
$/include)
# 建立可執行程式
add_executable(hello_binary
src/main.cpp
)# 鏈結動態庫檔案
target_link_libraries( hello_binary private hello::library)
三,擴充套件分析
1. add_library(hello_library shared src/hello.cpp)將會建立 libhello_library.so 名稱的動態庫。
2. 目標別名
add_library(hello::library alias hello_library)
hello::library是hello_library的別名, 別名允許使用別名來鏈結對應的庫檔案。
Linux系統下cmake生成動態庫 靜態庫。
動態庫是在程式的執行階段加入到源 的,在程式的編譯鏈結階段只會生成乙個小小的表,用來記錄呼叫動態庫的位址。形象地講,可執行 和動態庫各是各的,是分開的。只有在程式開始執行後,程式才會去找動態庫,然後一起工作。由動態庫的工作原理可知,程式與動態庫的關聯性極強。當程式執行時必須有動態庫存在。如果執行環境...
cmake 新增opencv 動態庫
cmakelists.txt 新增opencv 動態庫 cmake minimum required version 2.8 專案資訊 project server set cmake c compiler g add compile options std c 11 查詢當前目錄下的所有原始檔 並...
CMake設定生成vs工程的動態庫輸出路徑
在網上搜了很多的資料,發現cmake不能設定乙個動態庫工程的輸出目錄和中間目錄,難道除了vc之外其它編譯器如gcc中沒有這樣的選項?設定dll或exe的輸出目錄可以這樣 set target properties core properties runtime output directory bi...