cmake编译遇到的一些问题汇总

本文介绍了Windows开发中遇到的常见问题,如编译警告转错误、std::minmaxerror处理、BoringSSL报错、CMake配置、宏添加和动态库版本设置。重点讲解了如何通过添加编译选项、调整结构定义和使用正确链接方式来解决这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

telllong

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值