У меня следующая проблема. У меня есть код C ++ 17 (консольное приложение), который компилируется и запускается без проблем на Linux с использованием компилятора g ++. Когда я попытался скомпилировать его в VS C ++ 2019 Community Edition, он дал мне кучу ошибок о чертах типа и xutilities, как показано ниже (см. Ниже). Я знаю, что код, который я пытаюсь скомпилировать, является правильным (он использует одну внешнюю библиотеку "Armadillo" для матричной алгебры). Я считаю, что что-то не так с моей конфигурацией VS C ++, но я не смог найти решение в inte rnet, как это исправить (обратите внимание, мой код не содержит никаких включений std :: type_traits). Я запутался, почему я получаю эти ошибки. Опять же, программа компилируется и запускается без проблем в Linux. Любые идеи / предложения будут с благодарностью
[1/30] C:\PROGRA~2\MIB055~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\HostX64\x64\cl.exe /nologo /TP -I..\..\..\include -I..\..\..\libs\csv\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 -std:c++17 /showIncludes /FoCMakeFiles\a.exe.dir\src\Main.cpp.obj /FdCMakeFiles\a.exe.dir\ /FS -c ..\..\..\src\Main.cpp
FAILED: CMakeFiles/a.exe.dir/src/Main.cpp.obj
C:\PROGRA~2\MIB055~1\2019\COMMUN~1\VC\Tools\MSVC\1425~1.286\bin\HostX64\x64\cl.exe /nologo /TP -I..\..\..\include -I..\..\..\libs\csv\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 -std:c++17 /showIncludes /FoCMakeFiles\a.exe.dir\src\Main.cpp.obj /FdCMakeFiles\a.exe.dir\ /FS -c ..\..\..\src\Main.cpp
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(103): error C2065: '_IS_FUNCTION': undeclared identifier
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(103): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(113): error C2146: syntax error: missing ';' before identifier '_CLASS_DEFINE_CV_REF_NOEXCEPT'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2065: '_Ty': undeclared identifier
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2923: 'std::_Is_function': '_Ty' is not a valid template type argument for parameter '_Ty'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2955: 'std::_Is_function': use of class template requires template argument list
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(92): note: see declaration of 'std::_Is_function'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2059: syntax error: 'function-style cast'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2143: syntax error: missing ';' before '{'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(117): error C2447: '{': missing function header (old-style formal list?)
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\type_traits(138): error C2065: '_IS_MEMFUNPTR': undeclared identifier
Программа компилируется, если я удаляю все include_directories из файла CMakeList.txt. Если я добавлю include_directories («include») в CMakeList.txt, программа не сможет скомпилироваться, даже если каталог include пуст и библиотеки не используются. Итак, как включить библиотеки в cmake в VS на Windows?
# CMakeList.txt : CMake project for project, include source and define
# project specific logic here.
#
cmake_minimum_required (VERSION 3.8)
project ("project")
include_directories("include") # <-- THIS CAUSING THE PROBLEM
# Add source to this project's executable.
add_executable (project "project.cpp" "project.h")
target_compile_features(project PUBLIC cxx_std_17)