У меня возникли проблемы с правильным включением / использованием математической библиотеки glm (http://glm.g-truc.net/) в мой проект c ++. Поскольку glm - это библиотека, предназначенная только для заголовков, я подумал, что могу просто включить ее в эту строку:
#include "glm/glm.hpp"
Сначала это казалось работающим, поскольку я мог создавать и использовать матрицы и векторы. Однако, когда я попытался использовать функцию glm::translate(...)
, я получил эту ошибку:
error: ‘translate’ is not a member of ‘glm’
На сайте GLM рекомендуют включать библиотеку в треугольные скобки, например:
#include <glm/glm.hpp>
... но разве не правильно думать, что я могу включить его другим способом, учитывая, что он находится внутри структуры каталогов проекта?
Я настроил тест ниже, чтобы проиллюстрировать мою проблему. Папка glm
находится рядом с файлом testglm.cpp
.
#include <iostream>
#include "glm/glm.hpp"
using namespace std;
int main(void) {
// works:
glm::mat4 testMatrix1 = glm::mat4(5.0f) * glm::mat4(2.0f);
cout << testMatrix1[0][0] << endl; // output: 10
// doesn't work - (error: ‘translate’ is not a member of ‘glm’):
glm::mat4 testMatrix2 = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f));
}
Я создаю этот тест с помощью этой команды сборки из терминала в osx:
g++ -o bin/glm_test src/testglm.cpp
Я не уверен, связана ли моя проблема с тем, как я включаю библиотеку, как я ее использую или как я создаю проект. Google не дает мне никаких обращений к этому сообщению об ошибке, поэтому мне интересно, делаю ли я что-то в корне неправильно. Совет будет очень признателен. Спасибо.