編寫cmakelists文件常用語句

cmake_minimum_required (VERSION 3.10)?? 指定最小版本

project(XXXX)?????? 指定項目名字???????????????

---------------

set(MAIN_EXEC_NAME dwarf_parser)?? 定義變量

${ MAIN_EXEC_NAME }?? 變量取值

set(CMAKE_CXX_STANDARD 14) 指定c++14標準,還有11、17、20等標準

set(EXECUTABLE_OUTPUT_PATH? ../bin)? 指定輸出的路徑(絕對路徑)

aux_source_directory(路徑 變量名)? 搜索路徑下的源文件,存儲到變量,${ }取值??????????????

或者

file(GLOB /GLOB_RECURSE ?SRCS ?"path/*.cc")?? 搜索路徑下的cc文件存儲到變量

file的參數:GLOB 搜索當前目錄;GLOB_RECURSE 遞歸搜索當前目錄和子目錄

include_directories(include)? 指定源文件需要的頭文件在的目錄

--------------------------

set(LIBRARY_OUTPUT_PATH? ../home)? 指定庫文件生成到的路徑

add_library(庫名字 STATIC/SHARED 源文件) 制作靜態庫/動態庫,名字為lib+庫名字+.a/so

target_link_libraries(可執行程序名? 動態庫名字)? 程序鏈接動態庫/靜態庫

link_libraries(靜態庫名字libxxx.a/xxx)? 鏈接靜態庫

link_directories( path )? 若靜態庫/動態庫不是系統的,需要將路徑指定出來

add_executable(可執行程序名? 源文件名)?? 生成可執行程序

動態庫權限有PUBLIC 庫傳遞多次/ PRIVATE 庫傳遞一次/ INTERFACE 不傳遞,只鏈接庫里

--------------------------

message(“xxx”)? 顯示消息

前綴[無]代表重要消息,STATUS 非重要信息,FATAL_ERROR 錯誤并終值所有處理

#ifdef DEBUG

? Xxx

#endif

程序測試時候,加入宏定義控制代碼是否生效

gcc test.c -DDEBUG? 或者 add_definitions(-D宏名字)? 可以編譯時定義宏

-------------------------

Cmake的嵌套,在根節點的cmake里定義好變量并且添加子目錄,子節點直接使用。

子節點先添加源文件和頭文件,鏈接靜態庫,然后生成可執行文件。

靜態庫直接打包到可執行程序里,占內存,但方便;動態庫節省內存,但需要和可執行程序一起發布。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96453.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96453.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96453.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

麒麟桌面系統找不到mbr啟動,并重新安裝grub

根據你提供的情況,“麒麟桌面系統找不到MBR啟動”,這通常是由于GRUB引導損壞、MBR記錄丟失或分區表異常導致的。你可以按照以下步驟重新安裝GRUB并修復MBR啟動: ? 步驟一:準備工具 使用銀河麒麟LiveCD或U盤啟動盤(可用Ventoy制作); 啟動電腦,選擇從U盤或光盤進入Live環…

【音頻字幕】構建一個離線視頻字幕生成系統:使用 WhisperX 和 Faster-Whisper 的 Python 實現

一、背景介紹 對于一端沒有字幕外國視頻、字幕,在不懂外語的情況下,怎么獲取相關內容?作為技術宅,怎么自建搭建一個語音轉文字的環境當前AI技術這么發達? 試試 二、系統設計 音頻提取(僅僅是視頻需要該邏輯、本身就是音…

Linux ALSA架構:PCM_OPEN流程 (二)

一 應用端源碼路徑: external\tinyalsa\pcm.c external\tinyalsa\pcm_hw.cstruct pcm *pcm_open(unsigned int card, unsigned int device,unsigned int flags, struct pcm_config *config) {...pcm->ops &hw_ops;pcm->fd pcm->ops->open(card, device,…

tp5的tbmember表閉包查詢 openid=‘abc‘ 并且(wx_unionid=null或者wx_unionid=‘‘)

閉包查詢 tbmember表閉包查詢查詢 openid‘abc并且islose0并且islogout0并且(wx_unionidnull或者wx_unionid’) Db::table(tbmember)->where([openid>abc,islose>0,islogout>0])->where(function ($query){$query->where(wx_unioni…

邪修實戰系列(3)

1、第一階段邪修實戰總覽(9.1-9.30) 把第一階段(基礎夯實期)的學習計劃拆解成極具操作性的每日行動方案。這個計劃充分利用我“在職學習”的特殊優勢,強調“用輸出倒逼輸入”,確保每一分鐘的學習都直接服務…

【GD32】ROM Bootloader、自定義Bootloader區別

Bootloader是應用程序跑起來之前,用于初始化的一段程序,它分為兩種,ROM Bootloader、自定義Bootloader。GD32芯片出廠時預燒錄在ROM中的Bootloader(以下簡稱ROM Bootloader)和自己編寫的Bootloader(以下簡稱…

Linux防火墻-Firewalld

一、 概述 按表現形式劃分: 軟件防火墻: 集成在系統內部,Linux系統: iptables、firewalld、ufw; windows系統下: windows defender 硬件防火墻: 華為防火墻、思科防火墻、奇安信防火墻、深信服防…

【Qt】PyQt、原生QT、PySide6三者的多方面比較

目錄 引言 一、基本定義 二、核心對比維度 1. 編程語言與開發效率 2. 功能與 API 兼容性 3. 性能表現 4. 許可證與商業使用 5. 社區與文檔支持 三、遷移與兼容性 四、適用場景推薦 五、總結對比表 總結 引言 PySide6、PyQt(通常指 PyQt5/PyQt6&#xf…

JavaWeb站內信系統 - 技術設計文檔

1. 系統概述1.1 項目背景本系統旨在為企業或社區平臺提供一套完整的站內信解決方案,支持用戶之間的消息發送、接收、管理等功能,提升用戶間的溝通效率。1.2 設計目標實現用戶間消息發送和接收支持一對一和一對多消息發送提供消息狀態跟蹤(已讀…

Java基礎 9.10

1.System類常見方法和案例exit:退出當前程序arraycopy:復制數組元素,比較適合底層調用,一般使用 Arrays.copyOf 完成復制數組int[] src{1,2,3};int[] dest new int[3]; System.arraycopy(src, 0, dest, 0, 3);currentTimeMilens&…

詳解flink性能優化

1. 簡介 Apache Flink是一個強大的流處理框架,其性能很大程度上取決于內存的使用效率。在大規模數據處理場景中,合理的內存配置和優化可以顯著提升Flink作業的性能和穩定性。本文將深入探討Flink內存優化的各個方面,包括狀態后端選擇、內存配…

VueFlow的箭頭怎么調整

正好最近用到了VueFlow組件,發現箭頭默認樣式太小,無法體現流程展示,因此翻閱相關資料得出下列方法,有什么更好的方法,大家可以推薦推薦,謝謝。方法1:通過邊(Edge)的樣式…

【Python】S1 基礎篇 P9 文件處理與異常處理技術

目錄文件讀取操作讀取文件的全部內容相對路徑和絕對路徑逐行訪問文件內容文件寫入操作寫入單行內容寫入多行內容結構化數據的存儲異常處理機制理解異常的工作原理ZeroDivisionError異常示例try-except語句塊的使用else語句塊的正確使用靜默失敗的合理應用本文將深入探討Python中…

分布式事務實戰手冊:從四場業務災難看方案選型與落地陷阱

在分布式系統的穩定性戰役中,數據一致性問題如同潛伏的暗礁。某生鮮電商因分布式事務設計缺陷,在春節促銷期間出現"下單成功但無庫存發貨"的悖論,3小時內產生2300筆無效訂單,客服投訴量激增300%;某銀行轉賬系…

Java算法題中的輸入輸出流

在Java算法題中,處理輸入輸出主要依賴系統流(System.in和System.out),常用的方法總結如下: 一、輸入方法(讀取系統輸入) 主要通過java.util.Scanner類或BufferedReader類實現,適用于…

墨水屏程序

EPD Reader 基于ESP32-C3的電子墨水屏閱讀器,支持ap 配網、sntp 時間同步、txt閱讀、天氣預報、顯示節假日信息、農歷顯示、自動休眠、web配置等功能。這是在另一個項目 一個rust embassy esp32c3 的練習項目-CSDN博客的基礎上修改的 。 界面比較粗糙,以…

Git 創建 SSH 密鑰

1.生成 SSH 密鑰 打開 Git Bash ssh-keygen -t ed25519 -C "your_email@example.com" 把 ”your_email@example.com“ 改成再 github 注冊的郵箱 系統會提示您三次輸入: 第一個提示:Enter file in which to save the key (/c/Users/86189/.ssh/id_ed25519): 直接…

當前 AI 的主流應用場景

當前AI技術已深度滲透至社會各領域,2025年的主流應用場景呈現出行業垂直化、交互自然化、決策自主化三大特征。以下從六大核心領域展開分析,結合最新技術突破與規模化落地案例,揭示AI如何重塑人類生產生活范式: 一、智能辦公與生產力革命 AI正從工具升級為「數字同事」,…

EI會議:第六屆電信、光學、計算機科學國際會議(TOCS 2025)

第六屆電信、光學、計算機科學國際會議(TOCS 2025)定于11月21-23日在中國南陽舉行,本屆會議以“電信、光學、計算機科學”為主題,旨在為相關領域的專家和學者提供一個探討行業熱點問題,促進科技進步,增加科…

回歸預測 | MATLAB基于GRU-Attention的多輸入單輸出回歸預測

代碼是一個基于 MATLAB 的深度學習時間序列預測模型,結合了 GRU(門控循環單元)和自注意力機制(Self-Attention),用于回歸預測任務。 一、主要功能 使用 GRU + Self-Attention 神經網絡模型對時間序列數據進行回歸預測,評估模型在訓練集和測試集上的性能,并可視化預測結…