為了從開源代碼生成第三方庫,需要複製相關的頭文件(.h文件)、靜態庫文件(.lib文件)、動態庫文件(.dll文件)、以及與庫文件同名的pdb文件。如果只需要生成一兩個庫文件,人工做還好;如果有十幾甚至幾十個庫,人手工複製文件是一件很令人抓狂的事情。
本文使用批處理文件來解決這個問題,使用計算機完成這種簡單的重複性工作。
以Zlib的源碼編譯為例,使用CMake、VS2019生成Debug及Release版本,在Debug的目錄中有以下文件:

需求是:將目錄“D:SourceCodeszlib-1.2.11buildDebug”中的zlibd.lib、zlibd.pdb、zlibstaticd.lib、zlibstaticd.pdb四個文件複製到目錄“D:My3rdPartylib”中;將zlibd.lib、zlibd.pdb兩個文件複製到目錄“D:My3rdPartybin”中;將“D:SourceCodeszlib-1.2.11”及“D:SourceCodeszlib-1.2.11build”兩個目錄中的所有頭文件複製到目錄“D:My3rdPartyinclude”中。
以上這些工作,人工可以做,但是項目多時,人工做的效率低,還很容易出錯,所以編寫批處理文件來做,好處是大大的。
批處理文件名為makeMy3rdParty(假設該文件在目錄“D:My3rdParty”中)內容如下:
@echo off
setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
rem 來源目錄
set srcDir=%1
echo srcDir is %srcDir%
rem 目標目錄
set dstDir=%2
echo dstDir is %dstDir%
rem debug版lib文件所在目錄及目標目錄
set src=%srcDir%builddebug
set dst=%dstDir%lib
rem 複製lib及pdb文件到lib目錄
for /r %src% %%i in (*.lib) do (
rem 複製lib文件
echo copying %%i to %dst%
copy %%i %dst%
rem 複製同名的pdb文件
echo copying %src%%%~ni.pdb to %dst%
copy %src%%%~ni.pdb %dst%
)
rem 複製dll及pdb文件到bin目錄
set src=%srcDir%builddebug
set dst=%dstDir%bin
rem 複製lib及pdb文件到lib目錄
for /r %src% %%i in (*.dll) do (
rem 複製lib文件
echo copying %%i to %dst%
copy %%i %dst%
rem 複製同名的pdb文件
echo copying %src%%%~ni.pdb to %dst%
copy %src%%%~ni.pdb %dst%
)
rem 複製release版lib文件
echo copying release lib files
set src=%srcDir%buildrelease
set dst=%dstDir%lib
echo copying %src%*.lib to %dst%
copy %src%*.lib %dst%
rem 複製release版dll文件
echo copying release dll files
set src=%srcDir%buildrelease
set dst=%dstDir%bin
echo copying %src%*.dll to %dst%
copy %src%*.dll %dst%
rem 複製頭文件
echo copying header files to %dstDir%include
copy %srcDir%*.h %dstDir%include
copy %srcDir%build*.h %dstDir%include
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/224513.html