刷新clion中的CMakeLists.txt

时间:2016-03-09 16:10:09

标签: cmake clion

在CMakeLists.txt主文件的以下部分中,

# Allow builds to complete with warnings (do not set -Werror)
option(CIVETWEB_ALLOW_WARNINGS "Do not stop build if there are warnings" OFF)
message(STATUS "Build if there are warnings - ${CIVETWEB_ALLOW_WARNINGS}")

当我将CIVETWEB_ALLOW_WARNINGS切换为ON时,我仍然收到消息

  

- 如果有警告则建立 - 关闭

即使我在clion中使用“重新加载cmake项目”。

从命令行使用cmake,输出正确

  

- 如果有警告,则建立 - 开启

我在clion中需要做些什么才能正确刷新cmake更改?

更新1:

我将clion的cmake缓存CIVETWEB_ALLOW_WARNINGS更改为ON,但我仍然

error: macro name is a reserved identifier [-Werror,-Wreserved-id-macro]
#define _GNU_SOURCE /* for setgroups() */

更新2:

CMakeLists.txt中的以下行也与-Werror相关:

if (NOT CIVETWEB_ALLOW_WARNINGS)
  add_c_compiler_flag(-Werror)
endif()

if (NOT CIVETWEB_ALLOW_WARNINGS)
    add_cxx_compiler_flag(-Werror)
endif()

但请注意,上面消息中的${CIVETWEB_ALLOW_WARNINGS}已经评估为clion中的OFF和命令行中的ON

2 个答案:

答案 0 :(得分:2)

似乎你有两个问题。

首先,问题是“在cmake中更改选项不会导致选项真正发生变化”。那是由CMakeCache being annoying引起的。

现在你通过手动更改CMakeCache(而不是清除它并执行“重新加载CMake项目”)解决了这个问题,你有第二个问题:你的标志不起作用。我假设该标志应该停止-Werror传递给编译器,但我们可以从您的错误消息中看到这仍然发生。如果没有看到更多的CMakeLists.txt,我就无法获得更多帮助。也许你在使用removing flags from CMake时遇到了麻烦?

答案 1 :(得分:0)

1)现在,CLion具有“重置缓存并重新加载项目”选项。 (从CLion 2020.1或2019.3开始,不确定从旧版本开始)

它位于:CMake选项卡->左窗格中绿色“ Reload CMake Project”->红色回收按钮“ Reset Cache and Reload Project”下的齿轮图标: CLion Reset Cache and Reload Project

警告,这将删除您生成的二进制文件,迫使您重建项目。

2)在较旧的版本上,您可以删除cmake-build-debug / cmake-build-release目录并触发“重新加载CMake项目”。效果几乎与1)相同。

3)如果您之后不希望重建项目,则可以从CMakeCache.txt / cmake-build-debug目录中删除文件cmake-build-release,并从CMake选项卡触发“重新加载CMake项目”。