如何针对不同的运行时在 Windows link 上制作 Clang

How to make Clang on Windows link against different runtimes

在尝试用 C++ 构建个人项目时,我遇到了一个问题。我不确定它何时出现,因为我通常在 Linux 环境中处理该项目,但希望该项目在 Windows.

中处理

不幸的是,我正在使用的编译器 Clang 开始向我抛出以下错误:

libboost_filesystem-vc140-mt-1_61.lib(operations.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in buffer.obj

问题是我不知道如何告诉 Clang 底层编译器应该使用哪个运行时,如果不需要,我现在不希望使用 clang-cl

在 Windows link 上针对动态运行时制作 Clang 的正确方法是什么?

我不确定我所做的哪一部分阻止了 linker 的抱怨,但在我的构建脚本中,我指定 -D_MT -D_DLL 作为我的两个编译器和 linker 选项和我的 linker 我不得不禁用默认库 (-Xlinker /NODEFAULTLIB) 并手动指定要 link 反对的运行时版本 (在我的例子中,-lmsvcrt -lucrt -lmsvcprt -lvcruntime).这两项更改似乎已停止所有 linkage 和编译错误。