CMake を使用して SDL2 と SDL_image を統合する
この記事では、SDL2 と SDL_image を利用する C プログラムのコンパイルの問題について説明します。 CMakeを使用します。徹底的な調査の結果、次の最適化された CMake スクリプトが出現しました:
project(shooter-cmake2) cmake_minimum_required(VERSION 2.8) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") add_executable(${PROJECT_NAME} src/test.cpp) INCLUDE(FindPkgConfig) PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2) PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0) INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIRS}) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARIES})
この CMake スクリプトは、Ubuntu システム上で必要なライブラリを効果的に見つけ、提供されたサンプル関数の正常なリンクを可能にします:
#include "SDL.h" #include "SDL_image.h" SDL_Texture* loadTexture(const std::string &file, SDL_Renderer *ren){ SDL_Texture *texture = IMG_LoadTexture(ren, file.c_str()); texture != nullptr or die("LoadTexture"); return texture; }
--debug-output フラグを指定して CMake を実行すると、次の出力が生成されます。
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.26") Called from: [2] /usr/share/cmake-2.8/Modules/FindPkgConfig.cmake [1] $USER/stack-overflow/cmake-sdl2-image/CMakeLists.txt -- checking for one of the modules 'sdl2' Called from: [1] $USER/stack-overflow/cmake-sdl2-image/CMakeLists.txt -- checking for one of the modules 'SDL2_image>=2.0.0' Called from: [1] $USER/stack-overflow/cmake-sdl2-image/CMakeLists.txt
対応する pkgconfig をさらに調査したところ、SDL2_image.pc に Name: SDL2_image という行が含まれていることが判明しました。 PKG_SEARCH_MODULE の 3 番目のパラメータ。
以上がSDL2 および SDL_image を CMake と統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。