Выполнение теста COMPILER_HAS_DEPRECATED_ATTR — сбой

В настоящее время я получаю эту ошибку при попытке настроить проект на CMAKE с помощью Visual Studio 15 2017 Win64:

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 я получаю CMAKE_C_COMPILER, не установленный после EnableLanguage. Я попытался вручную установить компилятор VisualStudio 2017, но безуспешно. Любые идеи?

У другого человека была аналогичная проблема, и он решил ее, обновив Visual Studio некоторое время назад, поэтому я предполагаю, что это происходит откуда-то еще...:

Сбой компилятора на инструкциях С++ 11 в проекте Visual Studio, настроенном с помощью cmake

Спасибо!


person Diveye    schedule 06.11.2017    source источник
comment
VS2017 поддерживает устаревшие, поэтому, возможно, обнаружение не актуально?   -  person Bo Persson    schedule 06.11.2017
comment
Спасибо за ваш ответ, к сожалению, я также пытался настроить cmake с помощью Visual Studio 2015, но безуспешно =/   -  person Diveye    schedule 06.11.2017
comment
Похоже, этот тест проверяет __attribute__((__deprecated__)), не [[deprecated]]. Если вам нужно знать, поддерживается ли [[deprecated]] вашим компилятором, вы всегда можете написать свою собственную проверку компилятора, следуя подходу, аналогичному связанному.   -  person legalize    schedule 07.11.2017


Ответы (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.

person legalize    schedule 07.11.2017