windows平台下:
1.警告视为错误
解决办法: add_definitions("/WX-")
2.std::min max error
解决方法:add_definitions(-DNOMINMAX)
3.error C2143: 语法错误: 缺少“)”(在“常量”的前面) error C2143: 语法错误: 缺少“;”(在“常量”的前面)
error C2040: “LPCSTR”:“X509_name_st”与“const CHAR *”的间接寻址级别不同 boringssl报错
解决方法:add_definitions(-DWIN32_LEAN_AND_MEAN)
4.没有规则可制作目标,源文件存在(linux/windows都一样)
解决方式:编译了一个动态库,编译了一个静态库,用静态库去链接动态库就会出现这个问题,我都直接改为静态库就好了
4. error C2011: “timespec”:“struct”类型重定义
解决办法:add_definitions(-DHAVE_STRUCT_TIMESPEC)
5. cmake编译windows项目注释中包含中文报错
if(MSVC)
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
endif(MSVC)
6. 通过cmake向C++代码中添加宏
# 通用定义
add_defitions(-DVERY_GOOD=1)
# 指定target
target_custom_defitions(${target_name} PRIVATE VERY_GOOD=1)
7. 设置动态库版本号
# 主版本号1 ,linux上会自动生成软链接
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION 1.1.1 SOVERSION 1)