Ошибка при компиляции программы в cmake с directx. floorf: идентификатор не найден
Пытаюсь сделать программу вместе с directx, чтобы работало и в windows и в linux. Поэтому делаю с помощью cmake. Проблема возникает такая, что заголовки inline не видят математические функции. Вот какие ошибки.
Ошибка C3861 floorf: идентификатор не найден C:\Users\naidv\source\repos\Xenezex\out\build\x64-debug\Xenezex C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\um\DirectXMathVector.inl 2281
И так их много. Покажу настройку cmake.
if(WIN32)
set(ENGINE_SOURCES
"Engine/System/Windows/Main.cpp"
"Engine/System/Windows/Main.rc"
"Engine/Video/Windows/Video.cpp"
"Engine/Game/Windows/WindowsGame.cpp"
)
set(ENGINE_HEADERS
"Engine/System/Windows/Main.h"
"Engine/System/Windows/framework.h"
"Engine/Include/Windows/Video.h"
"Engine/Include/Windows/System.h"
"Engine/Include/Windows/WindowsGame.h"
"Engine/Include/Windows/Platform.h"
"Engine/Include/Windows/Key.h"
)
set(ENGINE_INCLUDE
"Engine/include"
)
set(WINDOWS_LIBS
"d3d11.lib"
"d3dcompiler.lib"
)
endif()
set(GAME_SOURCES
"Game/EntryPoint.cpp"
)
configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
set(SHARED_SOURCES
"Engine/Math/vec4.cpp"
"Engine/Game/Game.cpp"
"Engine/Game/IGame.cpp"
)
set(SHARED_HEADERS
"Engine/Include/Engine.h"
"Engine/Include/IVideo.h"
"Engine/Include/IGame.h"
"Engine/Include/Math.h"
"Engine/Include/vec4.h"
"Engine/Include/IKey.h"
)
add_executable (${NAME_PROJECT} ${ENGINE_SOURCES} ${ENGINE_HEADERS} ${SHARED_SOURCES} ${SHARED_HEADERS} ${GAME_SOURCES})
target_include_directories(${NAME_PROJECT} PUBLIC
${ENGINE_INCLUDE}
${CMAKE_CURRENT_BINARY_DIR}
${GAME_INCLUDE}
${VC_IncludePath}
${WindowsSDK_IncludePath}
${DX_SDK}
)
target_link_libraries(${NAME_PROJECT} PUBLIC
${WINDOWS_LIBS}
)
if(WIN32)
set_target_properties(${NAME_PROJECT} PROPERTIES WIN32_EXECUTABLE TRUE)
endif()
if (CMAKE_VERSION VERSION_GREATER 3.12)
set_property(TARGET ${NAME_PROJECT} PROPERTY CXX_STANDARD 20)
endif()
Источник: Stack Overflow на русском