CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12) # project name PROJECT(MyProject) # specify sources and headers SET(HDRS # module headers go here (*.h) ) SET(SRCS # module implementations go here (*.cpp) main.cpp ) # specify source directories INCLUDE_DIRECTORIES(.) # C++ standard SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -Wall -Werror") IF (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.2) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wvla") ENDIF (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.2) # default C++ compiler definitions IF (NOT CMAKE_BUILD_TYPE) IF (UNIX) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O") ENDIF (UNIX) ENDIF (NOT CMAKE_BUILD_TYPE) SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG") # extend cmake module path set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules) # find NCurses FIND_PACKAGE(Curses REQUIRED) INCLUDE_DIRECTORIES(${CURSES_INCLUDE_DIRS}) # find SDL FIND_PACKAGE(SDL QUIET) IF (SDL_FOUND) INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR}/..) INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR}/SDL) ENDIF (SDL_FOUND) # find SDL mixer FIND_PACKAGE(SDL_mixer QUIET) IF (SDL_MIXER_FOUND) INCLUDE_DIRECTORIES(${SDL_MIXER_INCLUDE_DIR}) ENDIF (SDL_MIXER_FOUND) # find SDL2 FIND_PACKAGE(SDL2 QUIET) IF (SDL2_FOUND) INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR}/..) INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIR}/SDL2) ENDIF (SDL2_FOUND) # find SDL2 mixer FIND_PACKAGE(SDL2_mixer QUIET) IF (SDL2_MIXER_FOUND) INCLUDE_DIRECTORIES(${SDL2_MIXER_INCLUDE_DIR}) ENDIF (SDL2_MIXER_FOUND) # SDL check IF ((SDL_FOUND AND SDL_MIXER_FOUND) OR (SDL2_FOUND AND SDL2_MIXER_FOUND)) ADD_DEFINITIONS("-DHAVE_SDL") IF (SDL_FOUND) MESSAGE(STATUS "SDL found") ELSE (SDL_FOUND) MESSAGE(STATUS "SDL2 found") ENDIF (SDL_FOUND) ELSE ((SDL_FOUND AND SDL_MIXER_FOUND) OR (SDL2_FOUND AND SDL2_MIXER_FOUND)) IF (NOT SDL_FOUND) MESSAGE(STATUS "SDL not found") ENDIF (NOT SDL_FOUND) IF (NOT SDL_MIXER_FOUND) MESSAGE(STATUS "SDL_mixer not found") ENDIF (NOT SDL_MIXER_FOUND) IF (NOT SDL2_FOUND) MESSAGE(STATUS "SDL2 not found") ENDIF (NOT SDL2_FOUND) IF (NOT SDL2_MIXER_FOUND) MESSAGE(STATUS "SDL2_mixer not found") ENDIF (NOT SDL2_MIXER_FOUND) ENDIF ((SDL_FOUND AND SDL_MIXER_FOUND) OR (SDL2_FOUND AND SDL2_MIXER_FOUND)) # ASCII GFX library FIND_PATH(GFXLIB_PATH ASCII-GFX.cmake PATHS ${CMAKE_CURRENT_LIST_DIR} PATH_SUFFIXES "ascii-gfx") IF (GFXLIB_PATH) INCLUDE(${GFXLIB_PATH}/ASCII-GFX.cmake) ENDIF (GFXLIB_PATH) # ASCII GFX check IF (GFXLIB_PATH) ADD_DEFINITIONS("-DHAVE_GFX") MESSAGE(STATUS "ASCII GFX found") ELSE (GFXLIB_PATH) MESSAGE(STATUS "ASCII GFX not found") ENDIF (GFXLIB_PATH) # build and link executable ADD_EXECUTABLE(main ${HDRS} ${SRCS}) # compile main executable IF (GFXLIB_PATH) TARGET_LINK_LIBRARIES(main ${GFXLIB_NAME} # link with ascii gfx lib ) ENDIF (GFXLIB_PATH) TARGET_LINK_LIBRARIES(main ${CURSES_LIBRARIES} # link with NCurses ) IF (SDL_FOUND AND SDL_MIXER_FOUND) TARGET_LINK_LIBRARIES(main ${SDL_LIBRARY} # link with SDL ${SDL_MIXER_LIBRARY} # link with SDL mixer ) ENDIF (SDL_FOUND AND SDL_MIXER_FOUND) IF ((SDL2_FOUND AND SDL2_MIXER_FOUND) AND NOT (SDL_FOUND OR SDL_MIXER_FOUND)) TARGET_LINK_LIBRARIES(main ${SDL2_LIBRARY} # link with SDL2 ${SDL2_MIXER_LIBRARY} # link with SDL2 mixer ) ENDIF ((SDL2_FOUND AND SDL2_MIXER_FOUND) AND NOT (SDL_FOUND OR SDL_MIXER_FOUND))