VS:如何配置DebugWithReleaseCrt
VS: How to configure DebugWithReleaseCRT?
我在我们的cmake脚本中添加了一个新的配置DebugWithReleaseCRT
,该配置基于漂亮的标准Debug
配置,但与Release CRT链接(/MD
而不是/MDd
),并定义_ITERATOR_DEBUG_LEVEL=0
。我检查了生成的项目文件设置,并且看起来不错:
c/c ->代码生成 -> runtimelibrary =多线程dll(/md)
但是,当我构建它时,我会得到以下错误:
3> 3rd-party.lib(3rd-party.obj):错误lnk2038:检测到的不匹配 对于'runtimelibrary':value'MD_DYNAMICREALESE'不匹配值 my.obj
中的'mdd_dynamicdebug'
我读为:
您的
构建My.cpp
文件与调试CRT编译 (MDd_DynamicDebug
)当您尝试与库链接时3rd-party.lib
由发行版CRT(MD_DynamicRelease
)
我还检查了此特定文件(My.cpp
)设置,但那里没有任何幻想,它从父项目继承了/MD
标志。
尽管有指定的/MD
标志,为什么我的项目与调试CRT相关?
问题与vs precompiler定义有关_debug
当您指定/MTD或/MDD选项时,编译器定义_debug。 这些选项指定C运行时库的调试版本。
由于我的DebugWithReleaseCRT
配置是基于Debug
的,因此它也复制了_DEBUG
定义。事实证明,如果将_DEBUG
定义为Overrules /MD
FLAG(MD_DynamicRelease
),并且VS仍然与Debug CRT链接(Hey Visual Studio Team,这是一个惊喜!)。
通过从DebugWithReleaseCRT
删除_DEBUG
来解决该问题。实际上,它是通过用NDEBUG
替换_DEBUG
来解决的,因为某些第三方依赖项需要确定其中之一的定义。我仍然不确定这是一种配置DebugWithReleaseCRT
的干净方法,我对在类型的调试配置中定义NDEBUG
并不特别自信。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 无法找到/读取配置文件.conf-FileIOException
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 一种在C++中读取TXT配置文件的简单方法
- 生成MRPT库时cmake配置失败
- FFMPEG配置文件级别id大小无效
- 如何通过Conan和CMake找到用于pkg配置的.pc文件
- 配置文件解析器仅返回以前的值
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 是否可以配置提升日志刷新?
- 如何配置Visual Studio Code以使用cygwin,cmake和gcc进行调试
- C/C++:打印(配置)头文件的内容
- 配置:错误:找不到 MySQL 包含目录
- 安装 psutil 和为 pypy 配置期间出错
- 叮当格式化程序多行格式配置错误
- 使用 Eclipse CDT 进行 Cplex 配置
- 为c++配置Visual studio代码
- 如何定义自定义生成配置类型,其中通常是.exe的目标改为 DLL
- 如何在窗户上使用和配置叮当声?