精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 Cmake 來搭建跨平臺的應用程序框架:C語言版本

開發 后端
這種要求對于 Linux 系列的平臺來說,還是比較好處理的,大部分情況下只需要換一個交叉編譯工具鏈即可,涉及到硬件平臺相關部分再嵌入幾個內聯匯編。
  • 一、前言
  • 二、示例代碼說明
  • 三、Linux 系統下操作步驟
  • 四、Widnows 系統下操作步驟
  • 五、總結

一、前言

我們在寫應用程序的過程中,經常需要面對一個開發場景:編寫跨平臺的應用程序。

這種要求對于 Linux 系列的平臺來說,還是比較好處理的,大部分情況下只需要換一個交叉編譯工具鏈即可,涉及到硬件平臺相關部分再嵌入幾個內聯匯編。

但是,對于 Windows 平臺來說,就稍微麻煩一些。你可能會說,在 Windows 平臺上用 cygwin, minGW 也可以統一編譯啊,但是你能指望客戶在安裝你的程序時,還需要去部署兼容 Linux 的環境嗎?最好的解決方式,還是使用微軟自家的開發環境,比如VS等等。

之前,我曾經在 B 站上傳一個類似的小視頻,用 C++ 來寫一個跨平臺的應用程序結構。后來有小伙伴希望提供一個 C 語言版本的,于是有了這篇文章。

這篇文章,我們就以一個最簡單的程序,來描述如何使用 cmake 這個構建工具,來組織一個跨平臺的應用程序框架。

閱讀這篇文章,您可以收獲下面幾個知識點:

cmake 在編譯庫文件、應用程序中的相關指令;

Windows 系統中的動態庫導出、導入寫法;

如何利用宏定義來進行跨平臺編程;

二、示例代碼說明

1. 功能描述

示例代碼的主要目的,是用來描述如何組織一個跨平臺的應用程序結構。它的功能比較簡單,如下圖所示:

2. 文件結構

  • Common:放置一些開源的第三方庫,例如:網絡處理,json 格式解析等等;
  • Application: 應用程序,使用 Utils生成的庫;
  • Uitls:放置一些工具、助手函數,例如:文件處理、字符串處理、平臺相關的助手函數等等,最后會編譯得到庫文件(動態庫 libUtils.so、靜態庫 libUtils.a);
  • 如果擴展其他模塊,可以按照 Utils 的文件結構復制一個即可。

3. cmake 構建步驟

在示例代碼根目錄下,有一個“總領” CMakeLists.txt 文件,主要用來設置編譯器、編譯選項,然后去 include 其他文件夾中的 CMakeLists.txt 文件,如下:

4. Utils 目錄說明

這個目錄的編譯輸出是庫文件:

Linux 系統:libUtils.so, libUtils.a;

Windows 系統:libUtils.dll, libUtils.lib, libUtils.a;

其中的 CMakeLists.txt 文件內容如下:

目前,代碼中只寫了一個最簡單的函數 getSystemTimestamp(),在可執行應用程序中,將會調用這個函數。

5. Application 目錄說明

這個目錄的編譯輸出是:一個可執行程序,其中調用了 libUtils 庫中的函數。

CMakeLists.txt 文件內容如下:

三、Linux 系統下操作步驟

1. 創建構建目錄 build

  1. $ mkdir build 

在一個獨立的 build 目錄中編譯,生成的中間代碼不會污染源代碼,這樣對于使用 git 等版本管控工具來說非常的方便,在提交的時候只需要 ignore build 目錄即可,強烈推薦按照這樣的方式來處理。

2. 執行 cmake,生成 Makefile

  1. $ cd build 
  2. $ cmake .. 

3. 編譯 Utils 庫

  1. $ cd Utils/src 
  2. $ make 

在 CMakeLists.txt 中的最后部分是安裝指令,把產生的庫文件和頭文件,安裝到源碼中的 install 目錄下。

  1. $ make install 

4. 編譯可執行程序 Application

Application 使用到了 libUtils.so 庫,因此需要手動把 libUtils.so 和頭文件,復制到 Application 下面對應的 lib/linux 和 include 目錄下。

當然,也可以把這個操作寫在 Utils 的安裝命令里。

  1. $ cd build/Application/src 
  2. $ make 

執行生成的可執行程序 main,即可看到輸出結果。

四、Widnows 系統下操作步驟

1. 通過 cmake 指令生成 VS 工程

同樣的道理,新建一個 build 目錄,然后在其中執行 cmake .. 指令,生成 VS 解決方案,我使用的是 VS2019:

2. 編譯 Utils 庫文件

使用 VS2019 打開工程文件 DemoApp.sln,在右側的解決方案中,可以看到:

在 libUtils_shared 單擊右鍵,選擇【生成】:

此時,在目錄 build\Utils\src\Debug 下面,可以看到生成的文件:

3. 編譯可執行程序 Application

因為Application需要使用 Utils 生成的庫,因此,需要手動把庫和頭文件復制到 Application 下面的 lib/win32 和 include 目錄下。

在 VS 解決方案窗口中,在 main 目標上,單擊右鍵,選擇【生成】:

此時,在目錄 build\Application\src\Debug 下可以看到生成的可執行程序:

直接單擊 main.exe 執行,報錯:

需要把 libUtils.dll 動態庫文件復制到 main.exe 所在的目錄下,然后再執行,即可成功。

五、總結

這篇文章的操作過程主要以動態庫為主,如果編譯、使用靜態庫,執行過程是一樣一樣的。

如果操作過程有什么問題,歡迎留言、討論,謝謝!

在公眾號后臺留言【430】,可以收到示例代碼。在 Linux/Windows 系統中可以直接編譯、執行,拿來即用。

 

祝您好運!

 

責任編輯:武曉燕 來源: IOT物聯網小鎮
相關推薦

2021-05-07 08:00:19

應用程序框架

2021-12-24 07:56:10

Cmake動態庫應用程序

2010-03-03 15:46:40

Android應用程序

2023-09-22 09:41:28

LinuxC語言

2013-06-03 09:34:14

崩潰程序程序算法

2015-01-14 09:41:28

跨平臺移動應用Linux開發

2009-07-14 18:10:38

Swing應用程序框架

2020-09-23 14:33:01

Golang桌面開發GUI

2015-01-06 13:42:45

跨平臺開發APP工具

2022-02-20 22:10:20

微服務框架gRPC

2009-08-28 16:43:08

AutoCAD托管C#

2011-03-22 14:12:17

LAMP

2010-01-19 15:18:12

C++語言

2013-11-19 15:35:01

2011-05-24 16:09:57

Androi

2024-09-06 10:46:04

2020-09-24 10:54:10

谷歌Flutter開發

2018-06-22 09:00:00

Java框架Pronghorn

2019-10-25 10:42:51

框架Web開發

2012-03-14 10:02:58

ibmdw
點贊
收藏

51CTO技術棧公眾號

在线电影中文日韩| 亚洲成人精品一区| 亚洲一区二区三区毛片| 久久国产精品波多野结衣av| 大奶在线精品| 欧美视频一区二区三区在线观看| 一区二区三区四区久久| 日韩有码第一页| 青青草97国产精品免费观看 | 国产成人精品综合久久久久99| 日本在线观看大片免费视频| 国产日韩欧美综合在线| 国产精品久久久久av福利动漫| 国产成人精品亚洲| 国内成人在线| 丝袜亚洲欧美日韩综合| 亚洲自拍偷拍精品| 亚洲ww精品| 欧美小视频在线| 成人国产一区二区三区| yw在线观看| 99免费精品视频| 成人免费福利在线| 69视频免费看| 亚洲清纯自拍| 久久99久久久久久久噜噜| 欧美熟妇激情一区二区三区| 99re8这里有精品热视频8在线| 欧美日韩成人激情| 国产激情在线观看视频| brazzers在线观看| 夜夜嗨av一区二区三区中文字幕| 亚洲一区二区在| 每日更新av在线播放| 不卡av在线免费观看| 91日本在线观看| 亚洲视频在线免费播放| 日韩在线a电影| 51午夜精品视频| 亚洲国产成人精品激情在线| 午夜精品婷婷| 欧美国产激情18| 在线免费观看亚洲视频| 婷婷激情图片久久| 日韩中文视频免费在线观看| 亚洲一区二区自偷自拍| 欧美美女在线观看| 亚洲精品色婷婷福利天堂| 亚洲婷婷在线观看| 黄色欧美在线| 亚洲福利小视频| 天天躁日日躁狠狠躁av麻豆男男| 亚洲日本va中文字幕| 日韩亚洲欧美中文三级| 无套内谢丰满少妇中文字幕| 久久精品一级| 精品国产污污免费网站入口 | 中文乱码免费一区二区| 丝袜美腿玉足3d专区一区| 九色在线观看视频| 久久精品视频在线看| 日韩免费毛片| 午夜在线视频播放| 中文字幕一区二区三区乱码在线| 亚洲综合首页| 色呦呦网站在线观看| 亚洲一区在线观看免费 | 日本欧洲一区二区| 91精品久久久久久| 精品国产亚洲av麻豆| 国产999精品久久久久久| 国产精品久久久久久久免费大片| 狠狠躁夜夜躁av无码中文幕| 91最新地址在线播放| 欧美日韩在线一二三| 成人免费在线观看| 成人免费在线观看入口| 农民人伦一区二区三区| 成人免费网站观看| 欧美亚洲愉拍一区二区| 青青草原播放器| 久久丝袜视频| 国产亚洲视频中文字幕视频| 男人操女人的视频网站| 国产综合精品一区| 国产xxx69麻豆国语对白| 亚洲一区中文字幕在线| 福利91精品一区二区三区| 久久精品国产精品青草色艺| 成年人视频免费在线观看| 亚洲精品午夜久久久| 亚洲自偷自拍熟女另类| 亚洲欧洲一二区| 国产丝袜一区二区三区免费视频| 国产精品1区2区3区4区| 亚洲精品麻豆| 91在线观看免费| 欧美日韩在线中文字幕| 尤物视频一区二区| 手机在线成人免费视频| 欧美激情极品| 久久久国产一区| 国产三级精品三级在线观看| 国产成人在线免费| 日韩欧美在线一区二区| 电影k8一区二区三区久久 | 久久久久久久久久久久91| 一区二区三区免费在线看| 一本色道久久88综合日韩精品| 妺妺窝人体色www在线下载| 日本不卡一区二区| 国产一区自拍视频| 免费人成在线观看播放视频| 婷婷中文字幕一区三区| 国模大尺度视频| 欧美精品尤物在线观看| 91av在线播放视频| www.国产三级| |精品福利一区二区三区| 无码精品国产一区二区三区免费| 日韩有吗在线观看| 色妞一区二区三区| 中文字幕免费高清网站| 99re视频精品| 僵尸世界大战2 在线播放| 免费日韩成人| 一区二区欧美激情| 国产一区二区视频免费| 97久久久精品综合88久久| www.成年人视频| 一区二区三区四区高清视频 | 亚洲永久一区二区三区在线| 日韩av中字| 日韩成人在线网站| 国产无人区码熟妇毛片多| 成人夜色视频网站在线观看| 欧美a级黄色大片| 粉嫩一区二区三区在线观看| 综合网中文字幕| 高潮无码精品色欲av午夜福利| 91麻豆国产精品久久| xxxx18hd亚洲hd捆绑| 精品精品国产毛片在线看| 欧美国产日本在线| 蜜臀久久99精品久久久| 亚洲最大成人综合| 潘金莲一级淫片aaaaa| 欧美大片专区| 成人在线资源网址| heyzo在线欧美播放| 亚洲精品99久久久久中文字幕| 精品久久免费视频| 不卡的av电影| 日韩精品一区中文字幕| 成人免费在线播放| 国产中文欧美精品| av片在线观看永久免费| 日韩免费视频一区二区| 国产精彩视频在线| 久久一留热品黄| 免费激情视频在线观看| 日韩欧美视频| 亚洲综合日韩中文字幕v在线| 91精品久久久| 亚洲精品一区在线观看| 日本黄色一级视频| 国产精品免费丝袜| 成人在线短视频| 最新日韩在线| 日韩精品国内| 国产高清日韩| 91成人福利在线| jyzzz在线观看视频| 欧美精品久久一区二区三区| 日日骚一区二区三区| 99久久久无码国产精品| 亚洲欧美另类动漫| 欧美午夜不卡| 欧美日韩国产不卡在线看| 欧美天堂在线| 久久久久久伊人| 国产在线黄色| 日韩精品一区国产麻豆| 国产一级做a爱片久久毛片a| 欧美国产亚洲另类动漫| 国产成人精品综合久久久久99| 中文亚洲欧美| 在线国产99| 黄色欧美在线| 成人免费在线视频网址| 国产三级电影在线播放| 色av吧综合网| 日本啊v在线| 日韩午夜av一区| 国产伦精品一区二区三区视频我| 亚洲视频在线观看一区| 国产精品无码永久免费不卡| 精品中文字幕一区二区小辣椒| 欧美精品久久久久久久免费| 日韩欧美精品一区| 久久久精品动漫| 亚洲精品在线a| 国产精品人成电影在线观看| 9999精品成人免费毛片在线看| 丝袜亚洲欧美日韩综合| 青青草超碰在线| 欧美v国产在线一区二区三区| 波多野结衣一区二区三区四区| 亚洲综合免费观看高清在线观看| 国产午夜福利一区| 91在线免费视频观看| 亚洲视频在线不卡| 久久66热re国产| 国产女女做受ⅹxx高潮| 国内一区二区三区| 国产精品久久成人免费观看| 精品国产91乱码一区二区三区四区| 国产日韩欧美一区二区| 高清不卡一区| 国产精品午夜一区二区欲梦| 韩日成人影院| 91国产视频在线| 黄色小说在线播放| 欧美成人久久久| 欧美三级黄网| 日韩最新中文字幕电影免费看| 能在线看的av| 日韩精品中文字| 污视频网站免费观看| 精品国产亚洲一区二区三区在线观看| a级片免费观看| 91精品视频网| 国产孕妇孕交大片孕| 欧美日韩一区中文字幕| 国产黄网在线观看| 91国偷自产一区二区开放时间 | 美女91在线| 久久大大胆人体| 97超碰资源站在线观看| 日韩一区二区三区xxxx| 黄网站在线免费看| 久久这里有精品| 操你啦视频在线| 久久6免费高清热精品| av网址在线播放| 九九久久久久久久久激情| a级影片在线| 欧美日韩国产第一页| 婷婷色在线资源| 久久男人av资源网站| 国产在线观看www| 日本三级韩国三级久久| 一区在线影院| 国产欧美一区二区白浆黑人| 日韩成人一区| 91久久极品少妇xxxxⅹ软件| 日韩精品视频一区二区三区| 国产精品美女久久久久av福利| 国内露脸中年夫妇交换精品| 久久精品中文字幕一区二区三区| 婷婷精品在线观看| 视频三区二区一区| 天天射天天综合网| 亚洲中文字幕无码一区二区三区| 亚洲伦伦在线| 日韩中文字幕组| 精品一区二区在线看| 色欲无码人妻久久精品| av成人动漫在线观看| 一色道久久88加勒比一| 中文字幕日韩欧美一区二区三区| 欧美精品入口蜜桃| 欧美性xxxx在线播放| 一级全黄少妇性色生活片| 日韩一区二区三| 日本天堂影院在线视频| 在线观看91久久久久久| 日本三级在线观看网站| 欧美洲成人男女午夜视频| 成人在线免费| 91传媒视频免费| 国产一区二区三区四区五区传媒| 伊人婷婷久久| 亚洲免费成人| 色戒在线免费观看| 波多野结衣亚洲一区| 大胸美女被爆操| 亚洲自拍偷拍综合| 天干夜夜爽爽日日日日| 欧美一区二区三区在| 暖暖视频在线免费观看| 色综合色综合久久综合频道88| 在线高清av| 97超级碰碰| 日韩综合精品| 精品国产一二三四区| 精品在线一区二区| 巨胸大乳www视频免费观看| 综合网在线视频| 蜜臀尤物一区二区三区直播| 日韩亚洲欧美一区二区三区| 黄网在线观看| 992tv成人免费影院| 国产一区 二区| 日韩中文一区二区三区| 99精品热6080yy久久| 亚洲欧美手机在线| 国产欧美一区二区三区鸳鸯浴 | 99r国产精品视频| 日韩精品一卡| 无码aⅴ精品一区二区三区浪潮| 国产精品99久久久久久久vr| 国产调教在线观看| 欧美丝袜美女中出在线| 国产香蕉在线观看| 久久视频免费在线播放| 四虎影视4hu4虎成人| 黑人另类av| 黄色免费成人| 波多野结衣网页| 亚洲人吸女人奶水| 国产亚洲久一区二区| 亚洲精品一区二区三区不| 久久不射影院| 91观看网站| 亚洲第一偷拍| 国内av一区二区| 国产精品麻豆网站| 瑟瑟视频在线免费观看| 亚洲欧美日韩第一区| 少妇视频一区| 免费看成人片| 在线视频亚洲| ass精品国模裸体欣赏pics| 欧美日韩国产黄| 天堂在线资源8| 国内伊人久久久久久网站视频| 警花av一区二区三区| 黄色网址在线免费看| 韩国一区二区在线观看| 中文字幕五月天| 4438x亚洲最大成人网| 日本三级视频在线观看| 成人两性免费视频| 亚洲一区二区日韩| 亚洲图片 自拍偷拍| 日韩毛片视频在线看| 国产又粗又长又黄| 久久影院模特热| 1769国产精品视频| 日韩a∨精品日韩在线观看| 99精品1区2区| 国产免费a视频| 色偷偷888欧美精品久久久| 亚洲免费一区| 日本五级黄色片| 99久久国产综合色|国产精品| 毛片视频网站在线观看| 亚洲色图偷窥自拍| 黑人一区二区三区| 今天免费高清在线观看国语| 国产xxx精品视频大全| 日韩人妻无码一区二区三区99| 亚洲欧美另类中文字幕| 久久精品黄色| 日本一区午夜艳熟免费| 91蜜桃在线免费视频| 久久精品99北条麻妃| 插插插亚洲综合网| 欧美一性一交| 色综合天天色综合| 亚洲精品成a人| 天堂网www中文在线| 国产精品日韩久久久久| 午夜视频一区| 久久国产精品无码一级毛片| 欧美三级乱人伦电影| 日韩另类在线| 欧美人xxxxx| 精品一区二区免费在线观看| 精品久久免费视频| 中文字幕久精品免费视频| 日本精品国产| 国产午夜福利视频在线观看| 亚洲欧洲精品一区二区三区| 免费国产精品视频| 国产精品网红直播| 亚洲国产婷婷| 在线观看免费小视频| 精品欧美一区二区三区精品久久| 国产精品久久久久av电视剧| www.黄色网址.com| 久久久久久久性| 午夜精品一二三区| 国产精品久久久精品| 亚洲国产精品第一区二区三区| 国产视频三区四区| 亚洲第一视频网站| 精品午夜av| 国产视频手机在线播放|