【问题标题】:Performing Test COMPILER_HAS_DEPRECATED_ATTR - Failed执行测试 COMPILER_HAS_DEPRECATED_ATTR - 失败
【发布时间】:2017-11-06 11:04:41
【问题描述】:

我目前在尝试使用 Visual Studio 15 2017 Win64 在 CMAKE 上配置项目时遇到此错误:

The C compiler identification is MSVC 19.11.25547.0
The CXX compiler identification is MSVC 19.11.25547.0
Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx86/x64/cl.exe
Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx86/x64/cl.exe -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx86/x64/cl.exe
Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/bin/Hostx86/x64/cl.exe -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features - done
Found OpenGL: opengl32  
Looking for pthread.h
Looking for pthread.h - not found
Found Threads: TRUE  
Using Win32 for window creation
Using WGL for context creation
Lib glbinding
Performing Test COMPILER_HAS_DEPRECATED_ATTR
Performing Test COMPILER_HAS_DEPRECATED_ATTR - Failed
Performing Test COMPILER_HAS_DEPRECATED
Performing Test COMPILER_HAS_DEPRECATED - Success
Configuring done

我用这个编译器生成了另一个项目,它仍然可以工作。 以下是与新的 CMakeLists.txt 相关的代码:

project(ms3d_td3)

cmake_minimum_required(VERSION 3.2.0)

add_subdirectory(ext/glfw)
add_subdirectory(ext/glbinding)

include_directories(ext/glfw/include)
include_directories(ext/glbinding/include)
include_directories(ext/eigen3)

if(APPLE)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")
else()
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()

set(SRC_FILES 
    src/main.cpp
    src/viewer.cpp
    src/viewer.h
    src/shader.cpp
    src/shader.h
    src/opengl.h)

add_definitions(-DDATA_DIR="${PROJECT_SOURCE_DIR}/data")

add_executable(ms3d_td3 ${SRC_FILES})

target_link_libraries(ms3d_td3 glfw ${GLFW_LIBRARIES} glbinding)

在 Visual Studio 2017 下,我在 EnableLanguage 之后未设置 CMAKE_C_COMPILER。我尝试将其手动设置为 VisualStudio 2017 编译器,但没有成功。有任何想法吗?

另一个人遇到了类似的问题,不久前通过升级 Visual Studio 解决了这个问题,所以我猜这是来自其他地方...:

Compiler failing on C++11 instructions in a Visual Studio project configured with cmake

谢谢!

【问题讨论】:

  • VS2017 does support deprecated 所以可能检测不是最新的?
  • 感谢您的回答,不幸的是我也尝试使用 Visual Studio 2015 配置 cmake 但没有成功 =/
  • 看起来this test 正在检查__attribute__((__deprecated__)),而不是[[deprecated]]。如果您需要知道您的编译器是否支持[[deprecated]],您可以随时按照与链接的方法类似的方法编写自己的编译器检查。

标签: c++ cmake visual-studio-2017 cmake-gui


【解决方案1】:

要要求编译器支持[[decprecated]] 属性,请使用target_compile_features 并指定cxx_attribute_deprecated 功能。例如:

add_executable(foo foo.cpp)
target_compile_features(foo PRIVATE cxx_attribute_deprecated)

如果您需要对此进行条件测试以便配置头文件,请使用check_cxx_source_compiles

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多