В моем проекте необходимо использовать как Micorsoft Visual C++ math.h
, так и Intel MKL math.h
.
Строя с подробными деталями, я получаю:
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cmath
1> Note: including file: E:\3rdParty\MKL\2017.1.143\windows\compiler\include\math.h
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\../../vc/include/math.h
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\crtdefs.h
1> E:\3rdParty\MKL\2017.1.143\windows\compiler\include\math.h(1577): warning C4005: 'HUGE_VALF' : macro redefinition
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\../../vc/include/math.h(104) : see previous definition of 'HUGE_VALF'
1> E:\3rdParty\MKL\2017.1.143\windows\compiler\include\math.h(1579): warning C4005: 'HUGE_VALL' : macro redefinition
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\../../vc/include/math.h(105) : see previous definition of 'HUGE_VALL'
1> E:\3rdParty\MKL\2017.1.143\windows\compiler\include\math.h(1581): warning C4005: 'HUGE_VAL' : macro redefinition
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\../../vc/include/math.h(96) : see previous definition of 'HUGE_VAL'
Сообщение «HUGE_VALF: переопределение макроса» вызвало у меня подозрения.
Сначала я просто отключил это предупреждение, но, учитывая, что эта опция только маскирует потенциальную проблему, я ищу альтернативное решение.
Из строк 1 и 2 видно, что cmath
Visual Studio включает не math.h
Visual Studio, как следовало бы, а файл MKL с тем же именем.
Как я могу настроить свой файл CMakeLists.txt
, чтобы компилятор мог выбрать правильные включаемые файлы?
Properties\Configuration Properties\C/C++\General
и верхнюю записьAdditional Include Directories
.E:\3rdParty\MKL\2017.1.143\windows\compiler\include
здесь? Если это так, попробуйте поставитьC:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include;
перед ним (еслиmath.h
есть даже в этом каталоге, вам лучше проверить). - person Ted Lyngmo   schedule 12.03.2020math.h
находится в этом каталоге include. - person Pietro   schedule 13.03.2020#ifdef
в файлеcmath
, которые не позволяютcmath
#include
писатьmath.h
? - person Ted Lyngmo   schedule 13.03.2020