2017-10-25 21 views
1

私は小さなゲームをコーディングしています。私は、(CLion IDEを使用して)グラフィックスにSDLライブラリを使用しています。私はすでにSDL2、SDL2_image、SDL2_ttfをダウンロードしました。コードでは、私は3つのライブラリが含まれており、いくつかのテキストを作るためにTTFを使用します。CLIon - SDL_TTFを使用した未定義のリファレンス

#include <SDL2/SDL.h> 
#include <SDL2/SDL_ttf.h> 

bool foo() { 

    if(SDL_Init(SDL_INIT_EVERYTHING)) { 
     return false; 
    } 

    if (TTF_Init() == -1){ 
     cerr << "Error ." << endl; 
    } 

    TTF_Font* font = TTF_OpenFont("Sans.ttf", 20); 
    SDL_Color color = {100, 0, 0}; 
    SDL_Surface* text; 

    ... 

また、私はこのライブラリをリンクし、次のメイクをしました:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread") 

set(CLIENT_FILES core/client.h core/client.cpp) 
set(CONFIGURATION_FILES configuration/configurationClient.cpp configuration/configurationClient.h) 
file(GLOB_RECURSE GAME_FILES "game/*.cpp" "game/*.h") 
file(GLOB_RECURSE MENU_FILES "menu/*.cpp" "menu/*.h") 

add_executable(client main.cpp ${CLIENT_FILES} ${MENU_FILES} ${CONFIGURATION_FILES} ${GAME_FILES}) 

include(FindPkgConfig) 

PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2) 
PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0) 
PKG_SEARCH_MODULE(SDL2TTF REQUIRED SDL2_ttf>=2.0.0) 

include_directories(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIRS} ${SDL2TTF_INCLUDE_DIRS}) 

target_link_libraries(client common SDLPrimitives ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARIES} ${SDL2TTF_LIBRARIES}) 

私の問題は、IDEが認識していることですSDL_ttfライブラリ(TTFがエラーとして赤でマークされていない)が、コードをコンパイルしようとすると、多くの未定義の参照があります。

CMakeFiles/client.dir/menu/menuClientVisual.cpp.o: In function `foo()': 
source/client/menu/foo.cpp:137: undefined reference to `TTF_Init' 
source/client/menu/foo.cpp:141: undefined reference to `TTF_OpenFont' 
source/client/menu/foo.cpp:145: undefined reference to `TTF_RenderText_Solid' 
source/client/menu/foo.cpp:152: undefined reference to `TTF_RenderText_Solid' 
source/client/menu/foo.cpp:157: undefined reference to `TTF_SetFontStyle' 
source/client/menu/foo.cpp:160: undefined reference to `TTF_RenderText_Solid' 

含む

+1

。生成されたMakefileを見て、TTFライブラリをリンクしようとしているかどうか、そしてそのセットが正しいパスに設定されているかどうかを確認してください。 – silent

答えて

0

試してみてください。それは、TTFライブラリに対してリンクされていない

find_library(SDL2TTF_LIBRARIES SDL_ttf) 
+0

私は同じエラーが発生しています。 find_libraryとPKG_SEARCH_MODULOはほとんど同じだと思いますか? – LaCumbancha

関連する問題