Ошибка при компиляции программы в cmake с directx. floorf: идентификатор не найден

Рейтинг: 0Ответов: 1Опубликовано: 02.03.2023

Пытаюсь сделать программу вместе с 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()

Ответы

▲ 0

Разобрался, нужно было Math.h переименовать в другой файл. Видимо не различает регистр букв.