2012-06-29 33 views
0

在我執行編譯器與線引用文件夾中的所有文件和其特定類型的

cl -GL -Od -Zi <all .h files> <all .c files> 

.bat文件的子文件夾,但我不知道如何引用的所有.c和.h文件以這種方式。我正在考慮* / .c和* / .h,但這兩者都是無效的參數。有沒有辦法以這種方式引用所有.c和.h文件?

+2

面具通常是這樣指定的:'* .h','* .c'。如果這就是你的意思,並且實際上已經嘗試過,並且它不起作用,那麼請澄清你現在要做的事情。你的意思是你想爲'.h'&''.c'文件的每個單獨對調用編譯器多次? –

+0

不,由於某種原因,文本編輯器拿出了我所指的內容。我的意思是遞歸地從一個文件夾中獲取所有的.c和.h文件以及它的所有子文件夾。我認爲* .c和* .h只能從當前目錄中獲取文件。 – SSEMember

+2

不管正確的掩碼可能是什麼,我認爲這取決於編譯器來解釋它,所以這個問題可能與批處理腳本沒有關係(但我並不完全確定)。即如果你想找到一種方法來爲所有的文件運行一次編譯器,你應該參考編譯器的手冊,看看它是否接受掩碼,以及是否有方法來引用子文件夾中的文件(它可能是一個命令行選項,而不是實際上一個複雜的面具)。 –

回答

0

cl不會讓你這樣做,但如果你想從某個特定點開始編譯每個文件夾中的所有C文件,那麼你可以做如下的事情。

請注意,使用這些命令選項,您無法傳遞頭文件。


@echo off 
set USAGE=Usage: %~n0 "C:\Existent Start Dir" 
if %1xx == xx (echo %USAGE% & exit /b 2) 
if not exist "%~1" (echo %USAGE% & exit /b 1) 
for /r "%~dpn1" %%f in (.) do (
    pushd %%f 
    if exist *.c (
    echo *** Compiling C files in %%f *** 
    call cl -GL -Od -Zi *.c 
    echo. 
) 
    popd 
) 

測試此有: test.cmd C:\mytest

如果C:\ mytest的包含簡單的* .c和* .h文件,這將工作幾個文件夾。 test.cmd C:\mytest

你可能真的想要調用nmake?

相關問題