Using SDL2 with CMake

前端 未结 12 863
野性不改
野性不改 2020-11-28 10:47

I\'m trying to use CLion to create a SDL2 project. The problem is that the SDL headers can\'t be found when using #include\'s.

My CMakeLists.txt file:



        
12条回答
  •  Happy的楠姐
    2020-11-28 10:54

    by the time of my answer, SDL2 is provided with sdl2-config executable (as I understand, developers call him "experimental"). After "make install" of SDL2 you can try calling it from terminal with sdl2-config --cflags --libs to see what it outputs.

    And then you can add call to it in your makefile:

    set(PROJECT_NAME SomeProject)
    
    project(${PROJECT_NAME})
    
    execute_process(COMMAND /usr/local/bin/sdl2-config --libs RESULT_VARIABLE CMD_RES OUTPUT_VARIABLE SDL2_CFLAGS_LIBS ERROR_VARIABLE ERR_VAR OUTPUT_STRIP_TRAILING_WHITESPACE)
    message("SDL2_CFLAGS_LIBS=${SDL2_CFLAGS_LIBS}; CMD_RES=${CMD_RES}; ERR_VAR=${ERR_VAR}")
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ${SDL2_CFLAGS_LIBS}")
    
    set(SOURCE_FILES main.cpp)
    add_executable(${PROJECT_NAME} ${SOURCE_FILES})
    

    Here I have a problem - if I only put an executable name without path like

    execute_process(COMMAND sdl2-config --libs <...>
    

    I get error "No such file", i.e. cmake does not search in current path and I don't know how to write it properly by now.

    One more notice: in my makefile I do not user --cflags option, because cmake finds includes correctly and I do not need to specify them explicitly.

提交回复
热议问题