Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cmake_minimum_required(VERSION 3.20)
- project(Bombe)
- set(CMAKE_CXX_STANDARD 20)
- # Search for required external packages
- find_package(SDL2 REQUIRED)
- find_package(SDL2_image CONFIG REQUIRED)
- find_package(SDL2_mixer CONFIG REQUIRED)
- find_package(SDL2_net CONFIG REQUIRED)
- find_package(SDL2_ttf CONFIG REQUIRED)
- find_package(zstd CONFIG REQUIRED)
- find_package(Z3 CONFIG REQUIRED)
- # Set platform-specific flags and dependencies
- set(NO_STEAM true) #remove this for building with steam
- if (NOT NO_STEAM)
- set(STEAM_FLAGS "")
- set(STEAM_LDADD "steam_api")
- else ()
- set(STEAM_FLAGS "-DNO_STEAM")
- set(STEAM_LDADD "")
- endif ()
- if (NOT MSVC)
- set(EXTRA_FLAGS "-mpopcnt")
- endif ()
- set(EXTRA_LDADD "")
- set(EXTRA_LD_FLAGS "")
- set(EXTRA_SRC "")
- if (LINUX)
- set(EXTRA_FLAGS "${EXTRA_FLAGS} -DTARGET_LINUX")
- list(APPEND EXTRA_LDADD -lX11 -lpng -pthread)
- endif ()
- if (MACOS)
- set(EXTRA_FLAGS "${EXTRA_FLAGS} -DTARGET_MACOS")
- list(APPEND EXTRA_LD_FLAGS -framework Cocoa)
- endif ()
- # Add executable targets
- add_executable(Bombe main.cpp
- Grid.cpp Grid.h
- Misc.cpp Misc.h
- GameState.cpp GameState.h
- SaveState.cpp SaveState.h
- LevelSet.cpp LevelSet.h
- Compress.cpp Compress.h
- ImgClipBoard.cpp ImgClipBoard.h
- ${EXTRA_SRC})
- # Set compiler flags and linker flags
- target_compile_options(Bombe PRIVATE ${STEAM_FLAGS} ${EXTRA_FLAGS})
- target_link_libraries(Bombe PRIVATE ${STEAM_LDADD} ${EXTRA_LDADD})
- if (EXTRA_LD_FLAGS)
- target_link_options(Bombe PRIVATE ${EXTRA_LD_FLAGS})
- endif ()
- target_compile_definitions(Bombe PUBLIC SECRET_ID=0)
- # Add libraries
- target_include_directories(Bombe PRIVATE ${Z3_CXX_INCLUDE_DIRS})
- target_include_directories(Bombe PRIVATE ${SDL2_INCLUDE_DIRS})
- add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/clip)
- target_link_libraries(Bombe PRIVATE clip)
- target_link_libraries(Bombe PRIVATE ${Z3_LIBRARIES})
- target_link_libraries(Bombe PRIVATE ${SDL2_LIBRARIES})
- target_link_libraries(Bombe PRIVATE $<IF:$<TARGET_EXISTS:SDL2_image::SDL2_image>,SDL2_image::SDL2_image,SDL2_image::SDL2_image-static>)
- target_link_libraries(Bombe PRIVATE $<IF:$<TARGET_EXISTS:SDL2_mixer::SDL2_mixer>,SDL2_mixer::SDL2_mixer,SDL2_mixer::SDL2_mixer-static>)
- target_link_libraries(Bombe PRIVATE $<IF:$<TARGET_EXISTS:SDL2_ttf::SDL2_ttf>,SDL2_ttf::SDL2_ttf,SDL2_ttf::SDL2_ttf-static>)
- target_link_libraries(Bombe PRIVATE $<IF:$<TARGET_EXISTS:SDL2_net::SDL2_net>,SDL2_net::SDL2_net,SDL2_net::SDL2_net-static>)
- target_link_libraries(Bombe PRIVATE $<IF:$<TARGET_EXISTS:zstd::libzstd_shared>,zstd::libzstd_shared,zstd::libzstd_static>)
- target_compile_options(Bombe PRIVATE ${Z3_COMPONENT_CXX_FLAGS})
- # copy required files to out directory afterwards
- set(LIST_OF_RESOURCE_FILES
- font-en.ttf
- font-fixed.ttf
- font-jp.otf
- font-sc.otf
- font-tc.otf
- lang.json
- texture.png
- levels.data
- )
- set(LIST_OF_RESOURCE_FOLDERS
- snd
- tutorial
- )
- foreach(file ${LIST_OF_RESOURCE_FILES})
- add_custom_command(
- TARGET Bombe POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy
- ${CMAKE_SOURCE_DIR}/${file}
- ${CMAKE_CURRENT_BINARY_DIR}/${file}
- COMMENT "Copying ${file} to output directory"
- )
- endforeach()
- foreach(file ${LIST_OF_RESOURCE_FOLDERS})
- add_custom_command(
- TARGET Bombe POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_directory
- ${CMAKE_SOURCE_DIR}/${file}
- ${CMAKE_CURRENT_BINARY_DIR}/${file}
- COMMENT "Copying ${file} to output directory"
- )
- endforeach()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement