Jest kawałek kodu
#include <iostream>
#include <cmath>
int main(int, char**) {
std::cout << "Hello, world!\n";
std::cout << M_PI; // <<< error: 'M_PI' was not declared in this scope
}
cmake_minimum_required(VERSION 3.0.0)
project(aaaa VERSION 0.1.0)
set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON" FORCE)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
add_executable(aaaa main.cpp)
Dlaczego taka fundamentalna stałą wymaga włączenia CMAKE_CXX_EXTENSIONS ? Albo zdefiniowania _USE_MATH_DEFINES ?
math.h:
#if !defined(__STRICT_ANSI__) || defined(_POSIX_C_SOURCE) || defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_USE_MATH_DEFINES)
#define M_PI 3.14159265358979323846
#endif