2012-06-29 11 views
0

В файле .bat я выполняющий компилятор с линиейРеферирование всех файлов в папке и ее подпапки определенного типа

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

, но я не знаю, как ссылаться на все .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?

 Смежные вопросы

  • Нет связанных вопросов^_^