cmake语言中获取除去某文件的其他所有文件

场景

对整个项目进行了编译选项设置,把所有警告当做了错误。但是使用一些短小的开源库时,开发者写的并不是很严谨。所以希望这些库在编译的过程中不将警告当做错误提示,以免影响自己项目的编译。

实现方法

网上有很多针对 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博客

posted @ 2023-10-12 20:21  pomolnc  阅读(121)  评论(0编辑  收藏  举报