使用MSVC(cl.exe)编译时如何排除指定文件?
在批处理中用cl.exe编译时排除特定文件
方法1:使用for循环逐个判断并编译
通过for遍历所有.c文件,跳过目标排除文件:
for %%f in ("..\source\*.c") do ( if not "%%~nxf"=="file_not_needed.c" ( cl /c "%%f" ) )
%%~nxf用来提取文件的文件名+扩展名,确保只匹配目标文件本身,不会误判路径中包含该名称的文件- 每次循环只编译符合条件的单个文件,逻辑直观易维护
方法2:结合dir和findstr筛选文件后编译
如果需要排除多个文件,用findstr的反向匹配更高效:
for /f "delims=" %%f in ('dir /b "..\source\*.c" ^| findstr /v /i "file_not_needed.c"') do ( cl /c "..\source\%%f" )
dir /b只输出文件名,简化后续筛选findstr /v表示反向匹配(排除包含指定字符串的行),/i可选,用来忽略大小写匹配- 可以在
findstr后添加多个文件名(用空格分隔),一次性排除多个文件
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

