Windows下Cmake與VS聯合製作dll

2021-07-13 15:53:12 字數 1743 閱讀 8540

接觸大的專案,鋪天蓋地的**總是會掩蓋了開發環境和工具的本質,上手之前,跑跑小的歷程有助於對專案的理解,提高效率。

execise_cmakedllgitgtest

建立兩個子資料夾和文字檔案

build lib

cmakelists.txt

cmakelists.txt如下:

project(alulib)

add_subdirectory(lib)

build是cmake的執行目錄,會在其中生成執行cmake指令後的一些檔案,執行之前是空的。

lib下存放準備生成dll的原始檔和檔案以及自己的cmakelists.txt,分別如下:

alu.cpp

#include "alu.h"

int main()

alu.h

#pragma once

#define dllexport __declspec( dllexport )//巨集定義

#ifndef alu_h

#define alu_h

#include

using namespace std;

class dllexport alu //要生成dll必須加上這個巨集,否則會出錯,這也是我求教得到的,之前也不懂,特此指出注意一下,同時致謝!

; ~alu() {};

int add();

int sub();

int mul();

int div();

private:

int a;

int b;

};#endif

cmakelists.txt

set(libalu_src alu.cpp)

add_library(alu shared $) #想得到動態庫,引數就是shared

檔案都準備好之後,在 cmd 中進入build資料夾下,執行

cmake . .

其中「. .」的意思是在其父目錄執行cmake,正好是主資料夾下。

執行結果:

在build中生成了alulib.sln

這個檔案就是要用到的檔案,現在該visual studio 2015登場了!

直接雙擊開啟sln檔案,會直接在vs中啟動。

右鍵all_build,選擇build,開始編譯整個工程。

之後在build生成若干新的資料夾,也有乙個lib,進入這個lib,debug,發現了乙個dll和lib。這裡需要說明,即使是生成dll動態鏈結庫檔案,也會同時產生乙個lib靜態連線庫檔案,這個比專門生成靜態連線庫的lib要小。此處的lib是作為dll的入口的意思。

到此為止,dll就製作完成了!

windows下cmake安裝使用

cmake是乙個跨平台的安裝 編譯 工具,可以用簡單的語句來描述所有平台的安裝 編譯過程 他能夠輸出各種各樣的makefile或者project檔案,能測試編譯器 所支援的c 特性,類似unix下的automake。只是 cmake 的組態檔 取名為 cmakelists.txt。cmake 並不直...

Windows下openssl安裝與在vs中的使用

由於專案需要在vs中呼叫openssl庫,因此簡單記錄一下最方便最簡單的方法 環境 os windows 10 x64 vs 2017 x86 0x00 在windows中安裝openssl 0x01 在vs中配置openssl 新建乙個專案,隨便新增一些原始檔或標頭檔案 之後在解決方案管理器中右鍵...

ubuntu下安裝cmake及cmake簡單使用

前言 最近突然想將開發環境轉移到linux上,同時也準備閱讀些github上的開源 發現現在開源專案一般都是用cmake管理的。所以就在自己的虛擬機器上搗鼓了一天。一開始我也不知道cmake是啥,後來通過折騰也大概知道其作用,它所做的事其實就是告訴編譯器如何去編譯鏈結源 你也許想問不是有makefi...