<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > cmake file 命令

cmake file 命令

發(fā)布人:電子禪石 時(shí)間:2022-10-21 來(lái)源:工程師 發(fā)布文章

file:文件操作命令.


file(WRITE filename "message towrite"... )


WRITE 將一則信息寫(xiě)入文件’filename’中,如果該文件存在,它會(huì )覆蓋它,如果不存在,它會(huì )創(chuàng )建該文件。



file(APPEND filename "message to write"... )


APPEND 如同WRITE,區別在于它將信息內容追加到文件末尾。


 


file(READ filename variable [LIMIT numBytes] [OFFSEToffset] [HEX])


READ 會(huì )讀取文件的內容并將其存入到變量中。它會(huì )在給定的偏移量處開(kāi)始讀取最多numBytes個(gè)字節。如果指定了HEX參數,二進(jìn)制數據將會(huì )被轉換成十進(jìn)制表示形式并存儲到變量中。



file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> filenamevariable)


MD5, SHA1, SHA224, SHA256, SHA384, 和SHA512 會(huì )計算出文件內容對應的加密散列。



file(STRINGS filename variable [LIMIT_COUNT num]

     [LIMIT_INPUT numBytes] [LIMIT_OUTPUTnumBytes]

     [LENGTH_MINIMUM numBytes] [LENGTH_MAXIMUMnumBytes]

     [NEWLINE_CONSUME] [REGEX regex]

     [NO_HEX_CONVERSION])


STRINGS 從文件中解析出ASCII字符串列表并存儲在變量中。文件中的二進(jìn)制數據將被忽略?;剀?chē)符(CR)也會(huì )被忽略。也能解析Intel Hex和Motorola S-record文件,這兩種文件在讀取是會(huì )自動(dòng)轉換為二進(jìn)制格式,可以使用參數NO_HEX_CONVERSION 禁用這種自動(dòng)轉換。LIMIT_COUNT設置可返回的最大數量的字符串。LIMIT_INPUT 設置從輸入文件中可讀取的最大字節數。LIMIT_OUTPUT設置了存儲在輸出變量中最大的字節數。 LENGTH_MINIMUM設置了返回的字符串的最小長(cháng)度。小于這個(gè)長(cháng)度的字符串將被忽略。 LENGTH_MAXIMUM 設置返回的字符串的最大長(cháng)度。大于這個(gè)長(cháng)度的字符串將被切分為長(cháng)度不大于于最大長(cháng)度值的子字符串。NEWLINE_CONSUME 允許換行符包含進(jìn)字符串中而不是截斷它們。REGEX 指定了返回的字符串必須匹配的正則表達式的模式。典型用法


file(STRINGS myfile.txt myfile), 將輸入文件的每行內容存儲在變量"myfile"中。



file(GLOB variable [RELATIVE path] [globbingexpressions]...)


GLOB 會(huì )產(chǎn)生一個(gè)由所有匹配globbing表達式的文件組成的列表,并將其保存到變量中。Globbing 表達式與正則表達式類(lèi)似,但更簡(jiǎn)單。如果指定了RELATIVE 標記,返回的結果將是與指定的路徑相對的路徑構成的列表。 (通常不推薦使用GLOB命令來(lái)從源碼樹(shù)中收集源文件列表。原因是:如果CMakeLists.txt文件沒(méi)有改變,即便在該源碼樹(shù)中添加或刪除文件,產(chǎn)生的構建系統也不會(huì )知道何時(shí)該要求CMake重新產(chǎn)生構建文件。globbing 表達式包括:


   *.cxx     - match all files with extension cxx

   *.vt?      - match all files with extension vta,...,vtz

   f[3-5].txt - match files f3.txt,f4.txt, f5.txt



file(GLOB_RECURSE variable [RELATIVE path]

     [FOLLOW_SYMLINKS] [globbingexpressions]...)


GLOB_RECURSE 與GLOB類(lèi)似,區別在于它會(huì )遍歷匹配目錄的所有文件以及子目錄下面的文件。對于屬于符號鏈接的子目錄,只有FOLLOW_SYMLINKS指定一或者cmake策略CMP0009沒(méi)有設置為NEW時(shí),才會(huì )遍歷這些目錄。


Examples of recursive globbing include:


   /dir/*.py - match all python files in /dir and subdirectories


 


file(RENAME <oldname> <newname>)


RENAME 將文件系統中的文件或目錄移動(dòng)到目標位置,并自動(dòng)替換目標位置處的文件或目錄。


 


file(REMOVE [file1 ...])


REMOVE 會(huì )刪除指定的文件以及子目錄下的文件。


file(REMOVE_RECURSE [file1 ...])


REMOVE_RECURSE 會(huì )刪除指定的文件及子目錄,包括非空目錄。


 


file(MAKE_DIRECTORY [directory1 directory2 ...])


MAKE_DIRECTORY在指定目錄處創(chuàng )建子目錄,如果它們的父目錄不存在,也會(huì )創(chuàng )建它們的父目錄。



file(RELATIVE_PATH variable directory file)


RELATIVE_PAT推斷出指定文件相對于特定目錄的路徑。



file(TO_CMAKE_PATH path result)


TO_CMAKE_PATH會(huì )將路徑轉換成cmake風(fēng)格的路徑表達形式。



file(TO_NATIVE_PATH path result)


TO_NATIVE_PATH與TO_CMAKE_PATH類(lèi)似,但執行反向操作,將cmake風(fēng)格的路徑轉換為操作系統特定風(fēng)格的路徑表式形式。



file(DOWNLOAD url file [INACTIVITY_TIMEOUT timeout]

     [TIMEOUT timeout] [STATUS status] [LOGlog] [SHOW_PROGRESS]

     [EXPECTED_MD5 sum])


DOWNLOAD下載指定URL的資源到指定的文件上。如果指定了LOG 參數,將會(huì )把下載的日志保存到相應的變量中。如果指定了STATUS變量,操作的狀態(tài)信息就會(huì )保存在相應的變量中。返回的狀態(tài)是一個(gè)長(cháng)度為2的列表。第一個(gè)元素是操作的返回值。0表示操作過(guò)程中無(wú)錯誤發(fā)生。如果指定了TIMEOUT,單位于秒,且必須為整數,那么在指定的時(shí)間后,操作將會(huì )超時(shí),INACTIVITY_TIMEOUT指定了操作在處于活動(dòng)狀態(tài)超過(guò)指定的秒數后,應該停止。如果指定了EXPECTED_MD5,如果操作會(huì )檢驗下載后的文件的實(shí)際md5校驗和是否與預期的匹配,如果不匹配,操作將會(huì )失敗,并返回相應的錯誤碼。如果指定了 SHOW_PROGRESS,那么進(jìn)度的信息將會(huì )被打印成狀態(tài)信息直到操作完成。


file(UPLOADfilename url [INACTIVITY_TIMEOUT timeout]

     [TIMEOUT timeout] [STATUS status][LOG log] [SHOW_PROGRESS])


UPLOAD與DOWNLOAD類(lèi)似,它執行的是一個(gè)上傳操作。參數含義與DOWNLOAD 一致。


 


file(<COPY|INSTALL> files... DESTINATION<dir>

     [FILE_PERMISSIONS permissions...]

     [DIRECTORY_PERMISSIONSpermissions...]

     [NO_SOURCE_PERMISSIONS][USE_SOURCE_PERMISSIONS]

     [FILES_MATCHING]

     [[PATTERN <pattern> | REGEX<regex>]

     [EXCLUDE] [PERMISSIONSpermissions...]] [...])


COPY表示復制文件,目錄以及符號鏈接到一個(gè)目標文件夾中。輸入路徑將視為相對于當前源碼目錄的路徑。目標路徑則是相對于當前的構建目錄。復制保留輸入文件的一些權限屬性,


除非顯式指定了NO_SOURCE_PERMISSIONS(默認是USE_SOURCE_PERMISSIONS),關(guān)于文件權限,PATTERN,REGX和EXCLUDE等相關(guān)選項可參考install(DIRECTORY)命令的文檔。 


INSTALL 與COPY略微有點(diǎn)不同:它打印狀態(tài)信息,并且默認情況下指定了 NO_SOURCE_PERMISSIONS。



測試例子:


message(STATUS "current dir: ${CMAKE_CURRENT_SOURCE_DIR}")

file(WRITE test1.txt "Some messages to Write\n" )

file(APPEND test1.txt "Another message to write\n")

file(READ test1.txt CONTENTS LIMIT 4 OFFSET 12)

message(STATUS "contents of test1.txt is: \n ${CONTENTS}")

file(MD5 ${CMAKE_CURRENT_SOURCE_DIR}/test1.txt HASH_CONTENTS)

message(STATUS "hash contents of test1.txt is: \n ${HASH_CONTENTS}")

file(STRINGS test1.txt PARSED_STRINGS)

message(STATUS "\n strings of test1.txt is: \n ${PARSED_STRINGS}")

file(GLOB files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.*")

message(STATUS  "files: ${files}")

file(MAKE_DIRECTORY dir1 dir2)

file(RENAME dir2 dir3)

file(REMOVE dir3)

file(REMOVE_RECURSE dir3)

file(RELATIVE_PATH relative_path ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test1.txt)

message(STATUS "relative path : ${relative_path}")

file(TO_CMAKE_PATH "$ENV{PATH}" cmake_path)

message(STATUS "cmake path: ${cmake_path}")

file(TO_NATIVE_PATH "/usr/local/sbin;/usr/local/bin" native_path)

message(STATUS "native path: ${native_path}")

file(DOWNLOAD "http://www.baidu.com" ${CMAKE_CURRENT_SOURCE_DIR}/index.html SHOW_PROGRESS)

file(COPY test1.txt DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/dir1)

file(INSTALL test1.txt DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/dir1)

————————————————

版權聲明:本文為CSDN博主「山莊來(lái)客」的原創(chuàng )文章,遵循CC 4.0 BY-SA版權協(xié)議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/fuyajun01/article/details/8880121


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: cmake

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>