【问题标题】:How to build MTd lib for fmt format library?如何为 fmt 格式库构建 MTd 库?
【发布时间】:2021-10-02 16:48:31
【问题描述】:

我在这里尝试使用以下库:https://github.com/fmtlib/fmt

使用提供的 cmake 文件构建成功。

但作为构建的一部分,它会生成 fmtd.lib 文件,默认情况下为 MD 动态库格式。

我需要将其重建为 MTd 静态调试库。

我尝试使用以下设置修改 CmakeLists.txt 文件:

if (MSVC)
  set(PEDANTIC_COMPILE_FLAGS /W3 /MTd)
  set(WERROR_FLAG /WX)
  set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
  set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
endif ()

这似乎不起作用。

关于如何更改它以构建正确版本的 fmtd.lib 的任何想法?

【问题讨论】:

    标签: cmake fmt


    【解决方案1】:

    你应该可以通过CMAKE_MSVC_RUNTIME_LIBRARY CMake 变量来做到这一点:

    cmake -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug ...
    

    【讨论】:

    • 谢谢。它确实奏效了。但现在我很困惑,正确的.lib 有41 个编译错误,/MDd 有19 个编译错误。错误如下所示:```LNK2038 mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' does not match value 'MTd_StaticDebug' in main.obj vcruntime140 \vcruntime140\fmtd.lib(format.obj) ``` with /医学博士
    • 以上是正确答案。一旦 CMake 完成工作,似乎也可以将 fmt 子项目与解决方案的其余部分分开重建。并为该编译明确指定 /MTd。
    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 2023-04-06
    • 2021-06-06
    • 2022-11-25
    • 2014-11-08
    • 2012-06-02
    相关资源
    最近更新 更多