title:
aliases:
tags:
- cmake
category:
- 方法
stars:
url:
creation-time: 2023-10-12 14:54
modification-time: 2023-10-12 15:04:12
场景
对整个项目进行了编译选项设置,把所有警告当做了错误。但是使用一些短小的开源库时,开发者写的并不是很严谨。所以希望这些库在编译的过程中不将警告当做错误提示,以免影响自己项目的编译。
实现方法
网上有很多针对 target
的方式,对我来说场景都不是很合适。我使用的思路是将所有源文件都读到一个 list
变量中,然后从这个变量中删除我不希望影响编译的库文件。
file(GLOB all_files "${CMAKE_CURRENT_SOURCE_DIR}/**")
list(REMOVE_ITEM all_files "${CMAKE_CURRENT_SOURCE_DIR}/Format.h")
# 获取除了 Format.h 的当前目录下的所有源文件
set(FLAGS "-fopenmp -Wall -Wextra -Werror")
set_source_files_properties("${all_files}" PROPERTIES COMPILE_FLAGS ${FLAGS})
# 设置严格的编译选项
Reference
Cmake命令之list介绍 - 简书 (jianshu.com)
c++编译时打开warning-as-error,并在特定情况下关闭某些warning检查-CSDN博客