Skip to content

CMake Tools does not provide the /Fo arg (and others) in a cpptools custom configuration #3085

@Colengms

Description

@Colengms

When I build a file with CMake Tools with a simple example, I'm seeing the following command line used:

cl /c /IZ:\repos\Bug\include /Zi /W3 /WX- /diagnostics:column /Od /Ob0 /D _MBCS /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR=\"Debug\"" /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"MyProject.dir\Debug\\" /Fd"MyProject.dir\Debug\vc143.pdb" /external:W3 /Gd /TP /errorReport:queue Z:\repos\Bug\main.cpp

The custom configuration sent to cpptools is missing some of those arguments:

    "includePath": [
        "z:/repos/bug/include"
    ],
    "defines": [],
    "compilerPath": "c:/program files/microsoft visual studio/2022/enterprise/vc/tools/msvc/14.35.32215/bin/hostx64/x64/cl.exe",
    "compilerArgs": [],
    "compilerFragments": [
        "/DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1"
    ]

I've not dug into the importance of the other missing arguments, but cpptools specifically needs the /Fo argument. If (and only if) it is a path ending in a backslash or forward slash, it's used as an output directory for .tlh files. We need that path to pass to EDGE for --import_dir. That argument would be needed in order to properly support #using of COM .tlb files in cpptools.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Pending Prioritization

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions