更改 CLion 中的默认 CMakeLists.txt 以包含警告

Posted

技术标签:

【中文标题】更改 CLion 中的默认 CMakeLists.txt 以包含警告【英文标题】:Change default CMakeLists.txt in CLion to include warnings 【发布时间】:2015-07-28 22:36:48 【问题描述】:

在 CLion 中,默认的 CMakeLists.txt 仅设置 C++11 编译器标志。我希望在我的所有项目中默认都有警告和迂腐标志。

这是默认设置

set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -std=c++11")

我希望默认使用它,这样我就不必在每次创建新项目时都更改它

set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -std=c++11 -W -Wall -Wextra -pedantic")

在“设置”-“文件和代码模板”中,我可以更改 C++ 标头/源模板,但不能更改 CMakeLists.txt 模板。有什么方法可以更改 CLion 中的默认 CMakeLists.txt 模板?

【问题讨论】:

看到打开了一个功能请求youtrack.jetbrains.com/issue/CPP-547 【参考方案1】:

请注意,这不能通过编辑 CmakeLists.txt 来覆盖!

我还建议制作相关文件的备份副本。

转到您安装/解压缩 CLion 的位置 然后

bin/cmake/share/cmake-3.2/Modules

并查找名为“CMakeCXXInformation.cmake”的文件

只需按照此模型编写/粘贴您的标志:

#This should be my default compiler flags
SET(CMAKE_CXX_FLAGS "-std=c++11 -Wall -Werror -Wextra -pedantic -
Wshadow -Woverloaded-virtual -Winvalid-pch -Wcast-align -Wformat=2 -
Wformat-nonliteral -Wmissing-declarations -Wmissing-format-attribute -
Wmissing-include-dirs -Wredundant-decls -Wswitch-default")

您可以将其写入/粘贴到任何您想要的位置 - 文件的顶部/底部。

保存文件,重新加载你的 Cmake 项目。享受吧!

(在 CmakeList.txt 中设置编译器标志的行可以忽略/删除)

 

可能是更好的解决方案:

由于 Intellij 的任何产品似乎都不支持这一点,我认为最好的解决方案是,如果您希望代码仍然可移植,则使用 [实时模板] (https://www.jetbrains.com/idea/help/live-templates.html)

我现在使用一个名为 flags 的实时模板,我刚刚在其中粘贴了我常用的标志以及一些其他代码花絮。 因此,每当我在 CMakeLists.txt 中时,我都可以键入标志,然后按 Tab 来展开该文本。 您当然可以拥有多个版本的标志,并且为它们使用实时模板将减轻每次都必须单独键入它们的负担。

【讨论】:

这不是答案。它甚至没有资格作为评论,因为它没有要求更多信息或建议对原始问题进行改进。这可能只是对这个问题的赞成票。 抱歉,这不能回答我的问题。使用您的解决方案,更改了 cmake 设置,而不是更改了默认的 CMakeLists.txt。在这种情况下,如果我在另一台机器上使用代码或其他人正在使用它,我将不会启用编译器标志。 OP,您是否希望您在一台机器上所做的“默认”更改会“神奇地”出现在另一台机器上?这样的神奇事件不会发生。

以上是关于更改 CLion 中的默认 CMakeLists.txt 以包含警告的主要内容,如果未能解决你的问题,请参考以下文章

CLion 中的嵌套 CMakeLists.txt 文件

# Clion中编译多个cpp(实现单文件编译)

mac10.12.6系统配置clion编写CMakeLists文件运行opencv3

从父 CMakeLists.txt 覆盖 CMake 中的默认选项(...)值

CLion 无法将项目识别为 C++14

如何在CMAKE和CLION中的每次构建后运行复制脚本? [重复]