更新meson ビルド システムに切り替えました。現在、すべてが正常に機能しています!
C++、OpenGl、および Gnome Builder を使用するのは初めてです。私は C++ の非常に基本的な基礎を持っており、CodeLite でヘッダー ファイルとライブラリをリンクする方法を知っていますが、Gnome Builder をいじった後、切り替えたいと思います。Builder の使用に関する初心者向けのチュートリアルは見つかりませんでした。Builder で外部ライブラリをリンクする方法がわかりません。Makefileを手動で編集するだけですか、それともautomakeでmakefileプロセスを自動化する設定がどこかにありますか? これがメイクファイルの問題であると仮定するのは間違っていますか? これが非常に初心者の質問である場合はお詫び申し上げます。
私はUbuntuを使用しています。すべての glfw および glew 変数とヘッダーで「... への未定義の参照」というエラーが表示されます。ライブラリを apt でインストールした後、ライブラリを usr/lib/x86-64-linux-gnu に、ヘッダーを usr/include にインストールしました。
#include <stdio.h>
#include <stdlib.h>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <glm/glm.hpp>
int main ()
{
glewExperimental = true;
if (!glfwInit() )
{
fprintf(stderr, "Failed to initialize GLFW \n");
return -1;
}
glfwWindowHint(GLFW_SAMPLES, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window;
window = glfwCreateWindow(1024, 768, "Tutorial 01", NULL, NULL);
if ( window == NULL )
{
fprintf(stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. \n");
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glewExperimental = true;
if (glewInit() != GLEW_OK)
{
fprintf(stderr, "Failed to Initialize GLEW. \n");
return -1;
}
glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);
do {
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
while ( glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS && glfwWindowShouldClose(window) == 0);
return 0;
}
ビルドしようとすると、このエラー出力が表示されます〜
g++ -o practice -Wall -ggdb -fno-omit-frame-pointer -O2 practice.cpp /usr/bin/ld: /tmp/ccLx11Ky.o: in function
main': /home/joe/Projects/practice/practice.cpp:30: undefined reference to
glewExperimental' /usr/bin/ld: /home/joe /Projects/practice/practice.cpp:31:glfwInit' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:36: undefined reference to
glfwWindowHint への未定義参照' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:37: glfwWindowHint への未定義参照glfwWindowHint' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:38: undefined reference to
' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:39: glfwWindowHint への未定義の参照glfwWindowHint' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:40: undefined reference to
' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:43: glfwMakeContextCurrent への未定義の参照glfwCreateWindow' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:50: undefined reference to
' /usr/ bin/ld: /home/joe/Projects/practice/practice.cpp:51: glewInit への未定義の参照glewExperimental' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:52: undefined reference to
' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:58: への未定義の参照glfwSetInputMode' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:65: undefined reference to
glfwWindowShouldClose' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:61: glfwSwapBuffers への未定義参照glClear' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:62: undefined reference to
' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:63 : glfwGetKey への未定義の参照glfwPollEvents' /usr/bin/ld: /home/joe/Projects/practice/practice.cpp:65: undefined reference to
/usr/bin/ld: /home/joe/Projects/practice/practice.cpp:47: `glfwTerminate' への未定義の参照 collect2: エラー: ld は 1 つの終了ステータスを返しました make: *** [Makefile :8:練習] エラー1
私のデフォルトのMakefileは次のようになります〜
all: practice
WARNINGS = -Wall
DEBUG = -ggdb -fno-omit-frame-pointer
OPTIMIZE = -O2
practice: Makefile practice.cpp
$(CXX) -o $@ $(WARNINGS) $(DEBUG) $(OPTIMIZE) practice.cpp
clean:
rm -f practice
# Builder will call this to install the application before running.
install:
echo "Installing is not supported"
# Builder uses this target to run your application.
run:
./practice