2017-02-01 10 views
1

私はSDL2をCLionと連携させようとしています(実験/学習できるように)。OS XでCLionとSDL2を併用する

#include <iostream> 
#include <SDL.h> 

const int SCREEN_WIDTH = 640; 
const int SCREEN_HEIGHT = 480; 

bool init(); 

SDL_Window* gWindow = NULL; 

SDL_Surface* gScreenSurface = NULL; 

SDL_Surface* gHelloWorld = NULL; 

bool init(){ 
    bool success = true; 
    /*if(SDL_Init(SDL_INIT_VIDEO)<0){ 
     success = false; 
    } 
    else{ 
    }*/ 

    return success; 
} 

int main() { 
    std::cout << "Hello, World!" << std::endl; 
    return 0; 
} 

そして、私のcmakeのファイルには、私は、プロジェクト内のフォルダにcmakeでhereからファイルFindSDL2.cmakeを持っている、また、この

cmake_minimum_required(VERSION 3.6) 
project(SDL2_Lesson_1) 

set(CMAKE_CXX_STANDARD 11) 

# includes cmake/FindSDL2.cmake 
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) 

find_package(SDL2 REQUIRED) 
include_directories(${SDL2_INCLUDE_DIR}) 

set(SOURCE_FILES Lesson_1.cpp) 

add_executable(SDL2_App ${SOURCE_FILES}) 
target_link_libraries(SDL2_App ${SDL2_LIBRARY}) 

set(SOURCE_FILES Lesson_1.cpp) 
add_executable(SDL2_Lesson_1 ${SOURCE_FILES}) 

次のようになります。

私の主なコードは、次のようなですフォルダ。 私はそれらのファイルを投稿したので、すべてがコンパイルされて正常に動作します。私が)のinit(内コメントセクションのコメントを外すときには、コンパイルがブレークダウンし、私に次のエラーを与える:

Undefined symbols for architecture x86_64: 
    "_SDL_Init", referenced from: 
     init() in Lesson_1.cpp.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make[3]: *** [SDL2_Lesson_1] Error 1 
make[2]: *** [CMakeFiles/SDL2_Lesson_1.dir/all] Error 2 
make[1]: *** [CMakeFiles/SDL2_Lesson_1.dir/rule] Error 2 
make: *** [SDL2_Lesson_1] Error 2 

注:Lesson_1.cppはメインコードを持つファイルです。また、これはエラーの一部に過ぎません。サイドノートとして

+0

、あなたはそれが簡単に使用してリソースを管理するために見つけることができ[RAII](http://stackoverflow.com/questions/2321511/)だからドンクリーンアップをしているときや、例外を処理するときにクリーンアップを明示的に処理するときに、何が初期化されていないかを手動でチェックする必要があります。 RAIIのSDLのようなCスタイルのインターフェイスを簡単にラップすることができます(http://stackoverflow.com/questions/39176805/)。 – jaggedSpire

+0

どれくらいの誤差がありますか?残りの部分を合理的に投稿できますか? – jaggedSpire

+0

@jaggedSpire確かに、私は残りのエラーを掲載しました。 –

答えて

0

利用find_library()代わりのfind_package()

find_library(SDL2_LIBRARY SDL2 "path/to/your/library_bundle") 
find_library(SDL2_App ${SDL2_LIBRARY}) 
+0

それは答えよりもコメントです。 – usr1234567

関連する問題