从 lib 中提取所有 obj 文件

Joh*_*wis 6 visual-c++ visual-studio-2013

如何从 .lib 文件中提取所有 .obj 文件?我发现的唯一方法是一次提取一个。有没有办法让它自动化?

LIB.EXE /EXTRACT:member.obj Library.LIB 
Run Code Online (Sandbox Code Playgroud)

Gas*_*rdP 6

这是批处理文件,我结束了与使用使用extract.bat mylib.libextract.bat *.lib甚至

@ECHO OFF
SETLOCAL EnableDelayedExpansion

:Loop
IF "%1"=="" GOTO Continue

FOR %%F in (%1) DO (

    SET LIBFILE=%%F
    SHIFT

    @ECHO !LIBFILE!

    FOR /F %%O IN ('lib.exe /LIST !LIBFILE! /NOLOGO') DO (
        @SET OBJFILE=%%O
        @ECHO !OBJFILE!
        
        SET OBJPATH=%%~dO%%~pO
        SET OBJNAME=%%~nO

        IF NOT EXIST "!OBJPATH!" md !OBJPATH!

        IF EXIST "!OBJFILE!" ECHO !OBJFILE! exists, skipping...
        IF NOT EXIST "!OBJFILE!" lib.exe /NOLOGO !LIBFILE! "/EXTRACT:!OBJFILE!" "/OUT:!OBJFILE!"
    )
)
GOTO Loop
:Continue
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。效果非常好! (3认同)

sum*_*ame -2

您可以使用 -Function 编写一个简短的程序来为您执行调用system(...)

不过,这仍然给您留下了生成成员对象文件列表的问题。