在 OS X 上使用 SDL2 和 CLion

Using SDL2 with CLion on OS X

本文关键字:SDL2 CLion OS      更新时间:2023-10-16

所以我试图让SDL2与CLion一起工作(这样我就可以实验/学习)。

我的主要代码是这样的:

#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_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})

另外,我在项目文件夹内的文件夹中有一个文件FindSDL2.cmake。现在,随着我发布的文件,一切都可以编译并运行良好。但是,当我取消注释 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是带有主代码的文件。此外,这只是错误的一部分。

使用 find_library() 而不是 find_package()

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