android - 如何使用 Cmake 在 Android 中使用 GLM

标签 android c++ android-ndk std glm-math

我正在尝试在 Android 中编译我的 OpenGL 应用程序。我正在使用 [GLM 库] (0.9.4) 1

编译工作直到我包含:

#include <glm/glm.hpp>

此 header 添加 cmath 和链接器提示:

cmath:102:11: error: '::acos' has not been declared
...
cstdio:107:11: error: '::fprintf' has not been declared

似乎 std 在 CMakeLists.txt 上使用 std 或 libc++ 的标志配置时存在一些问题

我的 CMakeLists.txt 是:

status("")
status("* Adding module Core C++ ")

SET(PROJ_NAME CORE_CPP)
PROJECT(${PROJ_NAME})

# Helper to set libs & bin paths
INCLUDE(${PATH_MAIN}/cmake_tools/scripts/helperPaths.cmake)

# Include header from Module Core
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/include )

IF(DEP_GLM)
  INCLUDE_DIRECTORIES( ${PATH_GLM} )
ENDIF(DEP_GLM)

# Source
#---------------------------------------------------#
file(GLOB CORE_CPP_SRC
    "src/*.cpp"
)
file(GLOB CORE_CPP_HEADERS
    "include/*.h"
)


# Create Library
ADD_LIBRARY(${PROJ_NAME} STATIC ${CORE_CPP_SRC} ${CORE_CPP_HEADERS})
#message("Link: ${LIBRARY_DEPS}")
SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic -fPIC" )
SET( LIBRARY_DEPS GLESv2 log android)
TARGET_LINK_LIBRARIES(${PROJ_NAME}  ${LIBRARY_DEPS})

status("- module ${PROJ_NAME} added! ")
  • 在以前版本的 gcc 中,需要在其包含内容中添加 #define _GLIBCXX_USE_C99_MATH 1,但它已经在我的版本(4.8)中添加了

知道问题出在哪里吗?

最佳答案

我发现了问题,我将 header 包含在我的命名空间中,因此链接器正在寻找 std 中的另一个命名空间。

#ifndef MYNAME_MATH_H
#define MYNAME_MATH_H

#include <glm/glm.hpp>  // Linker Work

namespace myname
{
    //#define _GLIBCXX_USE_C99_MATH 1
    //#include <glm/glm.hpp> // Make linker FAIL!

    //typedef glm::vec2 Vector2;
    //typedef glm::vec3 Vector3;
    //typedef glm::vec4 Vector4;
}

#endif // MYNAME_MATH_H

关于android - 如何使用 Cmake 在 Android 中使用 GLM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20354969/

相关文章:

java - 对于想要快速入门的 Java 程序员来说,哪些 Visual C++ 引用资料值得一看?

c++ - 在 Android NDK 应用程序上使用蓝牙扬声器的性能问题

android - 如何在 Android 上打印堆栈跟踪(带有符号函数名称)?

Android - 使用确定的 ProgressDialog 将位图保存到 SD 卡

java - 如何使用 Assist API android m

android - 有没有办法获取android "history"系统日志?

java - 代号一应用程序生命周期

c++ - 如何判断三角形网格是否凹陷?

c++ - section.data 中错误的 reloc 地址 0x0 python 的 C 扩展

android - Android 音乐流媒体应用程序上的致命信号 11