CLion不承认项目为C ++ 14

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CLion不承认项目为C ++ 14相关的知识,希望对你有一定的参考价值。

我一直在使用CMake工作personal project几个月。以前,我使用的是命令行为中心的方法(在像Geany这样的编辑器中编辑代码,然后使用make构建),因此我围绕我的项目构建了自己的CMakeLists.txt。我的项目有一个根CMakeLists.txt,表明使用的C ++标准是C ++ 14,使用set(CMAKE_CXX_STANDARD 14)set(CMAKE_CXX_STANDARD_REQUIRED ON),并添加了一些子文件夹中存在的子项目。

前段时间,我决定尝试使用CLion,因为它具有各种功能。我将项目导入CLion(不让它覆盖我的CMakeLists.txt),直到现在我对它非常满意。然而,即使最新版本的CLion明确支持C ++ 14,代码分析器仍然存在方法类型推导(即auto方法)的问题,它推导为void。我的代码无论如何编译得很好,干净,因为它使用我的Clang安装的工具链。

我的主要CMakeLists.txt看起来像这样:

cmake_minimum_required(VERSION 3.9)

project(ReboundTheGame)

set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules ${CMAKE_MODULE_PATH})
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install)
set(SFML_STATIC_LIBRARIES ON)

set(COMMONS_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/Commons)

if(MSVC)
    add_definitions(-D_USE_MATH_DEFINES -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS /wd4244)
endif()

add_subdirectory(CppMunk)
add_subdirectory(ExportTools)
add_subdirectory(MainGame)
add_subdirectory(Languages)
add_subdirectory(Resources)

add_custom_target(install_everything
    "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target install
    DEPENDS MainGame Languages Resources
    COMMENT "Installing ${PROJECT_NAME}")

有趣的是,我从CLion创建了一个空白的C ++ 14来测试它的功能,它的CMakeLists.txt具有我在我的项目中使用的完全相同的命令:

cmake_minimum_required(VERSION 3.9)
project(TestProject)    

set(CMAKE_CXX_STANDARD 14) // what's the difference??

add_executable(TestProject main.cpp)

然而,CLion设法纠正我在代码中使用的auto方法的类型。

到目前为止,我还没有深入研究两者的.idea文件夹来发现错误,但我现在已经没有想法如何解决这个问题了。我想这可能是项目的错误配置,所以如果有人需要它,我可以附上我存储的文件夹的存档供你检查。我正在使用Ubuntu 17.10,将我的cc设置为clang,将c++设置为clang++

答案

CLion在自动类型扣除方面存在问题。它可能是IDE问题,而不是您的代码。 https://youtrack.jetbrains.com/issues/CPP?q=%7Bauto%20and%20type%20and%20void%7D%20%23Unresolved

但我们正在努力使其变得更好。如果您没有在列表中找到它,请使用代码上下文报告您的问题。

以上是关于CLion不承认项目为C ++ 14的主要内容,如果未能解决你的问题,请参考以下文章

在使用自定义工具链时包括CLion检查的目录

clion中C项目交叉编译说明

未指定 CLion 目标 - 无目标

进程以退出代码 -1073741819 (0xC0000005) 结束 - C,CLion 但输出没有任何问题

在使用自定义工具链时包括用于 CLion 检查的目录

在 CLion 中链接到 C++ 的 C 代码不起作用