fmtlib / fmt

A modern formatting library
https://fmt.dev
Other
20.55k stars 2.46k forks source link

Build issue with WinLibs GCC on Windows after C++20 modules update #3993

Closed copyrat90 closed 3 months ago

copyrat90 commented 3 months ago

Issue

After commit https://github.com/fmtlib/fmt/commit/a9b851763854ffb21e9569f18e0f34b4f661fbeb (C++20 modules support), I'm experiencing this build error when I integrate fmt with FetchContent on C++20 or later.

I'm using WinLibs GCC 14.1.0 (MSVCRT) with Ninja 1.12.0 on Windows 10.

PS C:\Users\Home\test4> cmake --build .\build\
[1/4] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.obj
FAILED: _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.obj
C:\Library\mingw64\bin\c++.exe  -IC:/Users/Home/test4/build/_deps/fmt-src/include -std=c++20 -MD -MT _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.obj -MF _deps\fmt-build\CMakeFiles\fmt.dir\src\format.cc.obj.d -fmodules-ts -fmodule-mapper=_deps\fmt-build\CMakeFiles\fmt.dir\src\format.cc.obj.modmap -MD -fdeps-format=p1689r5 -x c++ -o _deps/fmt-build/CMakeFiles/fmt.dir/src/format.cc.obj -c C:/Users/Home/test4/build/_deps/fmt-src/src/format.cc
C:/Users/Home/test4/build/_deps/fmt-src/src/format.cc: error: failed reading mapper '_deps\fmt-build\CMakeFiles\fmt.dir\src\format.cc.obj.modmap'
[2/4] Building CXX object _deps/fmt-build/CMakeFiles/fmt.dir/src/os.cc.obj
FAILED: _deps/fmt-build/CMakeFiles/fmt.dir/src/os.cc.obj
C:\Library\mingw64\bin\c++.exe  -IC:/Users/Home/test4/build/_deps/fmt-src/include -std=c++20 -MD -MT _deps/fmt-build/CMakeFiles/fmt.dir/src/os.cc.obj -MF _deps\fmt-build\CMakeFiles\fmt.dir\src\os.cc.obj.d -fmodules-ts -fmodule-mapper=_deps\fmt-build\CMakeFiles\fmt.dir\src\os.cc.obj.modmap -MD -fdeps-format=p1689r5 -x c++ -o _deps/fmt-build/CMakeFiles/fmt.dir/src/os.cc.obj -c C:/Users/Home/test4/build/_deps/fmt-src/src/os.cc
C:/Users/Home/test4/build/_deps/fmt-src/src/os.cc: error: failed reading mapper '_deps\fmt-build\CMakeFiles\fmt.dir\src\os.cc.obj.modmap'
ninja: build stopped: subcommand failed.

Reproduce

cmake_minimum_required(VERSION 3.11)
project(Test)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

include(FetchContent)
FetchContent_Declare(fmt
    GIT_REPOSITORY https://github.com/fmtlib/fmt.git
    GIT_TAG master
)
FetchContent_MakeAvailable(fmt)

add_executable(Test main.cpp)
target_link_libraries(Test fmt)
// main.cpp
int main() {}
vitaut commented 3 months ago

cc @yujincheng08