2017-02-24 21 views
0

私は最近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のウェブサイトのチュートリアルでは、その他の情報やトラブルシューティングは行っていません。

何か助力や提案をいただければ幸いです。ありがとうございました。

答えて

1

。あなたのglad.cファイルが `glad`ディレクトリが動作しませんでした作成

#include "glad.h" 
+0

これは機能しました。私は 'glad.c'ファイルを' main.c'とともに '#include" glad.h "'を使うように変更しなければなりませんでした。ありがとうございました。 '#include 'が以前にはうまくいかなかった理由はありますか? 'glad.c'ファイルでも同じエラーが出ましたが、' #include 'で問題はありませんでしたが、どちらもプロジェクトディレクトリで同じ方法で設定されていました。 – Buttmoist

+0

'#include 'を使うときは、* includeディレクトリ*の中の指定された**相対パス**の検索をコンパイラに要求します。この相対パスがディレクトリに含まれていないため、コンパイラはそれを見つけることができません。また、インクルードディレクトリはCMakeの 'include_directories()'コマンドで指定する必要があります。これは、このライブラリをビルドするために 'add_subdirectory()'を実行するときにGLFWによって行われます。 – Tsyvarev

3

gladという名前のディレクトリにありませんので、glad/glad.h経由でそれを含めることは決してうまくいかないでしょう!

Linuxの場合、.というソフトリンクを作成してgladという名前にしてから、必要に応じてglad/glad/glad/glad/glad.hにすることができます。

より良い解決策は、ファイルがその期待されるパスで終わるので、適切なものをインストールすることです... CMakeのは、デフォルトで現在のディレクトリが含まれていない

+0

を使用することができますヘッダを含むためにその後

set(CMAKE_INCLUDE_CURRENT_DIR ON) 

:この動作を有効にするために、あなたはCMAKE_INCLUDE_CURRENT_DIR変数を設定する必要があります。私はまだ同じ問題があります。私は嬉しいウェブサイトに応じて嬉しいもインストールしました。これはヘッダファイルを生成するためだけに使用され、 'pip'が使う以外の特別なインストールディレクトリは必要ありません。 glfwは私が設定した方法に問題はないので、うれしいディレクトリを持たないことが問題であるとは思わない。 glfwウェブサイトはまた、喜んで生成したファイルをプロジェクトのルートディレクトリに置くだけでいいと言っています。 – Buttmoist

関連する問題