私は最近Javaで(lwjglを使用して)C/C++に書き込んだゲームエンジンを変換し始めました。私はFedora 25でQt CreatorとCMakeを使用しています(私はこれが何にも影響しないと確信しています)。すべてのディレクトリ、ファイルなどをリンクします。GLFWは私のシステムにインストールされていますが、含まれているバージョンよりも。私は私の拡張ローダーに喜んで使用しており、GLFW websiteのチュートリアルに従って設定しました。私は私のmain.c
ファイルでglad.h
ファイルが含まれている場合、私はエラーを取得するので、私は「Hello World」のテストを過ぎてもらっていない:#include <glad/glad.h>:ソースとヘッダーが同じディレクトリにあるにもかかわらず、そのようなファイルやディレクトリがありません
<glad/glad.h>: No such file or directory
何も同様に奇妙なことは、私は、この同じエラーでを取得するということですglad.c
ファイル、喜んで独自のジェネレータを使用して作成されたファイル。私main.c
ファイルには、私も"glad.h:
代わりの<glad/glad.h>
を(私はその提案hereを発見した)を使用して試してみましたが、この
#include <stdio.h>
#include <glad/glad.h>
#include <GLFW/glfw3.h>
int main(int argc, char *argv[])
{
printf("Kick Ass Game Engine");
return 0;
}
のように見えます。これは私のmain.c
ファイルでは機能しましたが、main.c
を反映するように編集した後でも、私はまだglad.c
ファイルで同じ問題を抱えています。
マイプロジェクトディレクトリは次のようになります。
- KAGE/
-> CMakeLists.txt
-> glad.c
-> glad.h
-> main.c
-> khplatform.h
-> KAGE/lib/
-> glad
-> glfw-3.2.1
あなたが見ることができるように、私の.c
とそのヘッダファイルのすべて1つのディレクトリにあります。 lib
ディレクトリは私が喜んでglfwを保つ場所です。私はちょうどlib/glad
ディレクトリからメインプロジェクトにファイルをコピーしました。マイCMake
は、私の周り探して試してみました。この
project(KAGE)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
add_subdirectory(/home/brian/KAGE/lib/glfw-3.2.1)
find_package(OpenGL REQUIRED)
target_link_libraries(KAGE glfw)
のように見えますが、システムにインストールされたライブラリを呼び出すようにしようとしたときにどこ問題の人々のすべてが持っていました。鉱山は設置されていません。私は別のディレクトリ(lib
)を持っています。私が探していたものに近づいた唯一の解決策は、<glad/glad.h>
を"glad.h"
に置き換える方法でした。私が以前に言ったように、これはうまくいきませんでした。 GLFWのウェブサイトのチュートリアルでは、その他の情報やトラブルシューティングは行っていません。
何か助力や提案をいただければ幸いです。ありがとうございました。
これは機能しました。私は 'glad.c'ファイルを' main.c'とともに '#include" glad.h "'を使うように変更しなければなりませんでした。ありがとうございました。 '#include 'が以前にはうまくいかなかった理由はありますか? 'glad.c'ファイルでも同じエラーが出ましたが、' #include 'で問題はありませんでしたが、どちらもプロジェクトディレクトリで同じ方法で設定されていました。 –
Buttmoist
'#include'を使うときは、* includeディレクトリ*の中の指定された**相対パス**の検索をコンパイラに要求します。この相対パスがディレクトリに含まれていないため、コンパイラはそれを見つけることができません。また、インクルードディレクトリはCMakeの 'include_directories()'コマンドで指定する必要があります。これは、このライブラリをビルドするために 'add_subdirectory()'を実行するときにGLFWによって行われます。 –
Tsyvarev