Skip to content

`M_PI_*` Undeclared Identifier

Summary

Starting with c475228b, I get the following errors during compilation:

eigen-src\Eigen\src/Core/arch/Default/GenericPacketMathFunctions.h(874): error C2065: 'M_PI_2': undeclared identifier

eigen-src\Eigen\src/Core/arch/Default/GenericPacketMathFunctions.h(876): error C2065: 'M_PI_4': undeclared identifier

I am using MSVC as my compiler, and I am using CMake FetchContent to download Eigen. I have confirmed that 1e1848fd does work.

Environment

  • Operating System : Windows
  • Architecture : x64
  • Eigen Version : c475228b
  • Compiler Version : MSVC 19.31.31106.2
  • Compile Flags : -external:W0 /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd -openmp -std:c++17 /showIncludes /FoMul
  • Vector Extension : Not sure.

Minimal Example

test.cpp

#include <Eigen/Core>

CMakeLists.txt

cmake_minimum_required(VERSION 3.22.2)

project(Test)

add_executable(Test test.cpp)

include(FetchContent)
FetchContent_Declare(
  Eigen
  GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
  GIT_TAG c475228b28d1bc81d2247860c6cd907bb316a0d6
  OVERRIDE_FIND_PACKAGE)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
set(EIGEN_BUILD_DOC OFF)
set(EIGEN_BUILD_PKGCONFIG OFF)
FetchContent_MakeAvailable(Eigen)

target_link_libraries(Test PUBLIC Eigen3::Eigen)

Steps to reproduce

  1. Install c475228b
  2. Build with MSVC and observe the errors.

What is the current bug behavior?

MSVC can't seem to find the definitions of M_PI_2 and M_PI_4

What is the expected correct behavior?

No error in finding the values.

Relevant logs

C:\Users\xxx\Builds\dev\_build\Testing - MSVC\_deps\eigen-src\Eigen\src/Core/arch/Default/GenericPacketMathFunctions.h(874): error C2065: 'M_PI_2': undeclared identifier
C:\Users\xxx\Builds\dev\_build\Testing - MSVC\_deps\eigen-src\Eigen\src/Core/arch/SSE/MathFunctions.h(86): note: see reference to function template instantiation 'Packet Eigen::internal::patan_double<Eigen::internal::Packet2d>(const Packet &)' being compiled

        with
        [
            Packet=Eigen::internal::Packet2d
        ]

C:\Users\xxx\Builds\dev\_build\Testing - MSVC\_deps\eigen-src\Eigen\src/Core/arch/Default/GenericPacketMathFunctions.h(874): error C2131: expression did not evaluate to a constantC:\Users\xxx\Builds\dev\_build\Testing - MSVC\_deps\eigen-src\Eigen\src/Core/arch/Default/GenericPacketMathFunctions.h(874): note: a non-constant (sub-)expression was encountered 
C:\Users\xxx\Builds\dev\_build\Testing - MSVC\_deps\eigen-src\Eigen\src/Core/arch/Default/GenericPacketMathFunctions.h(876): error C2065: 'M_PI_4': undeclared identifier
C:\Users\xxx\Builds\dev\_build\Testing - MSVC\_deps\eigen-src\Eigen\src/Core/arch/Default/GenericPacketMathFunctions.h(876): error C2131: expression did not evaluate to a constantC:\Users\xxx\Builds\dev\_build\Testing - MSVC\_deps\eigen-src\Eigen\src/Core/arch/Default/GenericPacketMathFunctions.h(876): note: a non-constant (sub-)expression was encountered