97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

wordpress網(wǎng)站不安全一級域名網(wǎng)站里有二級域名

鶴壁市浩天電氣有限公司 2026/01/24 10:45:52
wordpress網(wǎng)站不安全,一級域名網(wǎng)站里有二級域名,wordpress 交易模板,好看的網(wǎng)頁源碼CMake 中 add_executable 與 target_sources 詳解 #x1f4d6; 前言 在 CMake 構(gòu)建系統(tǒng)中#xff0c;add_executable 和 target_sources 是兩個用于管理源文件的重要命令。理解它們的關(guān)系、區(qū)別和使用場景#xff0c;對于編寫高質(zhì)量的 CMake 配置文件至關(guān)重要。本文將深入探…CMake 中 add_executable 與 target_sources 詳解 前言在 CMake 構(gòu)建系統(tǒng)中add_executable和target_sources是兩個用于管理源文件的重要命令。理解它們的關(guān)系、區(qū)別和使用場景對于編寫高質(zhì)量的 CMake 配置文件至關(guān)重要。本文將深入探討這兩個命令的用法、關(guān)系和最佳實踐。1?? add_executable創(chuàng)建可執(zhí)行文件目標基本語法add_executable(目標名 [源文件1] [源文件2] ...)功能說明add_executable用于創(chuàng)建一個可執(zhí)行文件目標這是構(gòu)建可執(zhí)行程序的第一步。它可以?創(chuàng)建目標在 CMake 中注冊一個可執(zhí)行文件目標?指定源文件可以同時指定一個或多個源文件?生成構(gòu)建規(guī)則告訴構(gòu)建系統(tǒng)如何編譯和鏈接這些源文件基本示例# 方式1創(chuàng)建目標并指定所有源文件 add_executable(myapp main.cpp utils.cpp helper.cpp ) # 方式2只創(chuàng)建目標稍后添加源文件 add_executable(myapp main.cpp)關(guān)鍵特點必須首先調(diào)用在添加源文件之前必須先創(chuàng)建目標每個可執(zhí)行文件調(diào)用一次一個add_executable對應一個可執(zhí)行文件源文件可選可以在創(chuàng)建時指定源文件也可以稍后用target_sources添加2?? target_sources向目標添加源文件基本語法target_sources(目標名 PRIVATE|PUBLIC|INTERFACE [源文件...])功能說明target_sources用于向已存在的目標添加源文件。它可以?添加源文件向已創(chuàng)建的目標添加更多源文件?控制可見性通過PRIVATE、PUBLIC、INTERFACE控制源文件的可見性?支持條件添加可以根據(jù)條件動態(tài)添加不同的源文件基本示例# 先創(chuàng)建目標 add_executable(myapp main.cpp) # 然后添加更多源文件 target_sources(myapp PRIVATE utils.cpp helper.cpp utils.h # 可選用于IDE顯示和依賴跟蹤 )關(guān)鍵特點目標必須已存在必須先調(diào)用add_executable或add_library創(chuàng)建目標可以多次調(diào)用可以向同一個目標多次添加源文件支持可見性控制通過關(guān)鍵字控制源文件的傳遞性3?? 兩者的關(guān)系和區(qū)別核心關(guān)系add_executable (創(chuàng)建目標) → target_sources (添加源文件) ↓ ↓ 必須首先調(diào)用 目標必須已存在對比表格特性add_executabletarget_sources功能創(chuàng)建可執(zhí)行文件目標向目標添加源文件調(diào)用時機必須先調(diào)用必須在目標創(chuàng)建后調(diào)用能否創(chuàng)建目標? 能? 不能能否添加源文件? 能? 能調(diào)用次數(shù)每個可執(zhí)行文件一次可以多次調(diào)用可見性控制? 不支持? 支持PRIVATE/PUBLIC/INTERFACE使用方式對比方式1只用add_executable適合簡單項目# 一次性創(chuàng)建目標并指定所有源文件 add_executable(multifile main.cpp math_utils.cpp )優(yōu)點簡單直接所有源文件一目了然適合源文件較少的項目缺點不支持條件添加源文件不支持可見性控制方式2add_executabletarget_sources適合復雜項目# 先創(chuàng)建目標 add_executable(multifile main.cpp) # 然后添加更多源文件 target_sources(multifile PRIVATE math_utils.cpp math_utils.h )優(yōu)點支持條件添加源文件支持可見性控制更靈活適合大型項目缺點代碼稍顯復雜源文件分散在多處4?? 可見性關(guān)鍵字詳解target_sources支持三個可見性關(guān)鍵字用于控制源文件的傳遞性PRIVATE私有含義源文件只用于構(gòu)建當前目標不會傳遞給依賴它的其他目標。使用場景實現(xiàn)文件.cpp僅內(nèi)部使用的頭文件可執(zhí)行文件的所有源文件因為可執(zhí)行文件通常不被其他目標依賴示例add_executable(myapp main.cpp) target_sources(myapp PRIVATE math_utils.cpp # 實現(xiàn)文件 math_utils.h # 頭文件僅內(nèi)部使用 )PUBLIC公共含義源文件用于構(gòu)建當前目標并且會傳遞給依賴它的其他目標。使用場景庫的公共頭文件需要被使用該庫的目標訪問的頭文件示例add_library(mylib STATIC math_lib.cpp) # PRIVATE實現(xiàn)文件不對外暴露 target_sources(mylib PRIVATE math_lib.cpp # 實現(xiàn)文件 ) # PUBLIC公共頭文件使用者需要它 target_sources(mylib PUBLIC math_lib.h # 公共頭文件會傳遞給使用者 )INTERFACE接口含義源文件不用于構(gòu)建當前目標但會傳遞給依賴它的其他目標。使用場景接口庫INTERFACE library的頭文件僅提供頭文件的庫header-only library示例# 創(chuàng)建接口庫只有頭文件沒有實現(xiàn) add_library(header_only_lib INTERFACE) target_sources(header_only_lib INTERFACE header_only.h # 頭文件不編譯但使用者可以訪問 )可見性對比表關(guān)鍵字用于構(gòu)建當前目標傳遞給依賴者典型用途PRIVATE? 是? 否實現(xiàn)文件、內(nèi)部頭文件PUBLIC? 是? 是庫的公共頭文件INTERFACE? 否? 是接口庫的頭文件傳遞性演示假設有庫A→可執(zhí)行文件B# 庫A add_library(A STATIC) target_sources(A PRIVATE file1.cpp # B 看不到 ) target_sources(A PUBLIC file2.h # B 可以看到 ) target_sources(A INTERFACE file3.h # B 可以看到但A不編譯它 ) # 可執(zhí)行文件B add_executable(B main.cpp) target_link_libraries(B A)結(jié)果? B 可以訪問file2.hPUBLIC? B 可以訪問file3.hINTERFACE? B 不能訪問file1.cppPRIVATE5?? 實際應用場景場景1簡單項目推薦用add_executablecmake_minimum_required(VERSION 3.10) project(SimpleApp LANGUAGES CXX) # 所有源文件已知一次性指定 add_executable(myapp main.cpp utils.cpp helper.cpp )適用情況源文件數(shù)量少 10個源文件固定不需要條件添加項目結(jié)構(gòu)簡單場景2條件編譯推薦用target_sourcescmake_minimum_required(VERSION 3.10) project(ConditionalApp LANGUAGES CXX) # 先創(chuàng)建目標 add_executable(myapp main.cpp) # 根據(jù)平臺添加不同的源文件 if(WIN32) target_sources(myapp PRIVATE windows_utils.cpp win_specific.cpp ) else() target_sources(myapp PRIVATE unix_utils.cpp unix_specific.cpp ) endif()適用情況需要根據(jù)平臺、配置等條件添加不同的源文件源文件較多需要分類管理場景3庫項目混合使用cmake_minimum_required(VERSION 3.10) project(MyLibrary LANGUAGES CXX) # 創(chuàng)建靜態(tài)庫 add_library(mylib STATIC) # PRIVATE實現(xiàn)文件不對外暴露 target_sources(mylib PRIVATE math_lib.cpp # 實現(xiàn)文件 internal_helper.cpp # 內(nèi)部輔助函數(shù) internal_helper.h # 內(nèi)部頭文件 ) # PUBLIC公共頭文件使用者需要它 target_sources(mylib PUBLIC math_lib.h # 公共頭文件會傳遞給使用者 ) # 創(chuàng)建可執(zhí)行文件并鏈接庫 add_executable(myapp main.cpp) target_link_libraries(myapp mylib)適用情況創(chuàng)建庫供其他目標使用需要區(qū)分公共接口和內(nèi)部實現(xiàn)場景4包含頭文件IDE支持cmake_minimum_required(VERSION 3.10) project(IDEExample LANGUAGES CXX) # 創(chuàng)建目標 add_executable(myapp main.cpp) # 添加源文件 target_sources(myapp PRIVATE math_utils.cpp math_utils.h # 添加頭文件用于IDE顯示和依賴跟蹤 )適用情況希望IDE如 Visual Studio、CLion在項目樹中顯示頭文件需要更精確的依賴跟蹤6?? 完整示例多文件項目讓我們看一個完整的示例演示兩種方式的使用項目結(jié)構(gòu)02-多文件示例/ ├── CMakeLists.txt ├── main.cpp ├── math_utils.h └── math_utils.cpp方式1使用add_executable當前方式cmake_minimum_required(VERSION 3.10) project(MultiFile LANGUAGES CXX) # 添加所有源文件 add_executable(multifile main.cpp math_utils.cpp )方式2使用add_executabletarget_sourcescmake_minimum_required(VERSION 3.10) project(MultiFile LANGUAGES CXX) # 先創(chuàng)建目標 add_executable(multifile main.cpp) # 然后添加更多源文件 target_sources(multifile PRIVATE math_utils.cpp # 實現(xiàn)文件 math_utils.h # 頭文件可選用于IDE顯示 )兩種方式效果相同選擇哪種取決于項目需求和個人偏好。7?? 最佳實踐1. 何時使用add_executable?推薦使用簡單項目源文件數(shù)量少 10個源文件固定不需要條件添加希望所有源文件集中在一處便于查看2. 何時使用target_sources?推薦使用需要根據(jù)條件添加不同的源文件源文件較多需要分類管理創(chuàng)建庫需要區(qū)分公共接口和內(nèi)部實現(xiàn)希望IDE顯示頭文件3. 可見性關(guān)鍵字選擇可執(zhí)行文件幾乎總是使用PRIVATE庫的實現(xiàn)文件使用PRIVATE庫的公共頭文件使用PUBLIC接口庫的頭文件使用INTERFACE4. 頭文件的處理技術(shù)角度頭文件.h不需要在 CMake 中顯式列出編譯器會自動通過#include處理頭文件實踐角度可以列出頭文件用于IDE顯示和依賴跟蹤對于庫公共頭文件應該用PUBLIC列出5. 代碼組織建議# 推薦清晰的注釋和分組 cmake_minimum_required(VERSION 3.10) project(MyProject LANGUAGES CXX) # 創(chuàng)建可執(zhí)行文件 add_executable(myapp main.cpp) # 添加源文件 target_sources(myapp PRIVATE utils.cpp helper.cpp utils.h helper.h )8?? 常見問題Q1: 頭文件需要添加到 CMakeLists.txt 嗎A: 技術(shù)上不需要編譯器會自動處理#include。但可以添加用于IDE 項目樹顯示依賴跟蹤頭文件改變時觸發(fā)重新編譯Q2: 可執(zhí)行文件可以用 PUBLIC 或 INTERFACE 嗎A: 技術(shù)上可以但通常沒有必要。因為可執(zhí)行文件不會被其他目標依賴所以PRIVATE就足夠了。Q3:add_executable和target_sources可以混用嗎A: 可以可以先在add_executable中指定一些源文件然后用target_sources添加更多。add_executable(myapp main.cpp utils.cpp) target_sources(myapp PRIVATE helper.cpp)Q4: 什么時候必須用target_sourcesA: 以下情況必須使用需要條件添加源文件需要控制源文件的可見性PRIVATE/PUBLIC/INTERFACE在子目錄的 CMakeLists.txt 中向父目錄的目標添加源文件9?? 總結(jié)核心要點add_executable創(chuàng)建可執(zhí)行文件目標可以同時指定源文件target_sources向已存在的目標添加源文件支持可見性控制關(guān)系add_executable創(chuàng)建目標target_sources添加源文件可見性PRIVATE私有、PUBLIC公共、INTERFACE接口選擇建議簡單項目使用add_executable一次性指定所有源文件復雜項目使用add_executabletarget_sources更靈活庫項目使用target_sources區(qū)分公共接口和內(nèi)部實現(xiàn)記憶口訣add_executable 創(chuàng)建目標target_sources 添加文件PRIVATE 私有自己用PUBLIC 公共大家用INTERFACE 接口給別人用
版權(quán)聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請聯(lián)系我們進行投訴反饋,一經(jīng)查實,立即刪除!

棗莊網(wǎng)站建設哪家公司好翻頁h5制作軟件

棗莊網(wǎng)站建設哪家公司好,翻頁h5制作軟件,網(wǎng)站制作技術(shù)人員,市場營銷價格策略10個ANSYS CFD后處理高級技巧#xff1a;從基礎到實戰(zhàn)的完整指南 【免費下載鏈接】CFD-POST后處理教程 這是

2026/01/21 18:53:01

泉州百度網(wǎng)站推廣瀑布流網(wǎng)站源碼

泉州百度網(wǎng)站推廣,瀑布流網(wǎng)站源碼,濟南市歷城區(qū)精神文明建設網(wǎng),耒陽網(wǎng)站建設還在為無法隨時隨地觀看B站精彩內(nèi)容而苦惱嗎#xff1f;BilibiliDown作為一款專為B站用戶設計的視頻下載工具#xff

2026/01/21 17:30:01

建設金融網(wǎng)站網(wǎng)絡營銷營銷型網(wǎng)站建設

建設金融網(wǎng)站,網(wǎng)絡營銷營銷型網(wǎng)站建設,試描述一下網(wǎng)站建設的基本流程,網(wǎng)站開發(fā)服務合同前言 在如今的IT運維工作中#xff0c;重復的服務器配置、軟件安裝、服務啟停等工作占用了大量時間#xff0c;而且

2026/01/23 01:44:01

個人網(wǎng)站備案 流程百度熱門關(guān)鍵詞排名

個人網(wǎng)站備案 流程,百度熱門關(guān)鍵詞排名,2017網(wǎng)站設計如何報價,免費ppt資源網(wǎng)站Perl編程入門指南 1. 編寫第一個Perl腳本 Perl具有許多C語言的特性,就像大多數(shù)C語言書籍以一個在終

2026/01/23 07:34:01

臨沂網(wǎng)站設計價格wordpress國主題

臨沂網(wǎng)站設計價格,wordpress國主題,公司網(wǎng)絡營銷推廣軟件,上海金山網(wǎng)站建設公司條碼掃描技術(shù)終極指南#xff1a;從核心原理到最佳實踐方案 【免費下載鏈接】zxing ZXing (Zebra

2026/01/23 02:31:01