错误
使用CMakeLists编译时报类似错:
# En
cl : Command line warning D9025 : overriding '/MTd' with '/MDd'
# 中文
cl: 命令行 warning D9025 : 正在重写'/MTd'用'/MDd'
原因分析
这种原因是由于设置CMAKE_C_FLAGS
、CMAKE_CXX_FLAGS
、CMAKE_C_FLAGS_DEBUG
、CMAKE_CXX_FLAGS_DEBUG
这几个参数时覆盖设置了。
以其中一个参数${CMAKE_C_FLAGS}
为例,原来的设置为:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -W0 -bigobj -MTd")
输出${CMAKE_C_FLAGS}
message(STATUS "CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}")
# output
-- CMAKE_C_FLAGS: /DWIN32 /D_WINDOWS -W3 -MDd
因此会报错,用W3重写W0,用MDd重写MTd。
解决方法
依然以${CMAKE_C_FLAGS}
为例,其他参数同理。去掉${CMAKE_C_FLAGS}
,并保留需要的参数。
set(CMAKE_C_FLAGS "/DWIN32 /D_WINDOWS -W0 -bigobj -MTd")