summaryrefslogtreecommitdiffhomepage
path: root/games
diff options
context:
space:
mode:
authorAhmad Fatoum <[email protected]>2018-07-28 16:08:41 +0200
committerAhmad Fatoum <[email protected]>2018-07-29 12:35:35 +0200
commit3f097263310c3993a742891bce4dc00892aa5c3d (patch)
tree0edbf1dec83be178ebe2978aecd29dcf5828030a /games
parent3e5093eab0ef4949e9e08fda5de0cd3d31b7e2c1 (diff)
downloadraylib-3f097263310c3993a742891bce4dc00892aa5c3d.tar.gz
raylib-3f097263310c3993a742891bce4dc00892aa5c3d.zip
CMake: Major cleanup to support find_package(raylib)
Remove that link_libraries_to_executable() hack and defines a proper raylib target that can be used with target_link_libraries. The same target is also available for external (user) code by using find_package(raylib). This results in: - Remove hardcoded build directories from examples and games CMakeLists.txt - Allow rlgl_standalone and other special examples to be built easily - Allow CMake projects to find_package(raylib instead of fiddling with pkg-config - Makes code a little more maintainable - Fixes #471, #606. - Makes code less confusing by removing the double use of PLATFORM (#584). Note that this is still not _The Right Way_(TM), because normally raylib-config.cmake (or its includes) would be automatically generated. I didn't manage to get that to work though, so I went the easier route of just wrapping pkg_check_modules for consumption by find_package.
Diffstat (limited to 'games')
-rw-r--r--games/CMakeLists.txt15
-rw-r--r--games/drturtle/CMakeLists.txt17
-rw-r--r--games/just_do/CMakeLists.txt17
-rw-r--r--games/koala_seasons/CMakeLists.txt17
-rw-r--r--games/light_my_ritual/CMakeLists.txt17
-rw-r--r--games/skully_escape/CMakeLists.txt17
-rw-r--r--games/wave_collector/CMakeLists.txt17
7 files changed, 41 insertions, 76 deletions
diff --git a/games/CMakeLists.txt b/games/CMakeLists.txt
index 563dbb61..d3f9d9fc 100644
--- a/games/CMakeLists.txt
+++ b/games/CMakeLists.txt
@@ -1,17 +1,9 @@
# Setup the project and settings
project(games)
-include("../cmake/utils.cmake")
-
-# Make sure raylib has been built
-# TODO `build` directory should maybe be something else...
-# TODO place somewhere else?
-include_directories("../build/release")
-
# Get the source toegher
file(GLOB sources *.c)
-message("PLATFORM = ${PLATFORM}")
set(OUTPUT_EXT)
if(${PLATFORM} MATCHES "Web")
@@ -20,18 +12,21 @@ if(${PLATFORM} MATCHES "Web")
set(OUTPUT_EXT ".html")
endif()
+if (NOT TARGET raylib)
+ find_package(raylib 2.0 REQUIRED)
+endif()
# Do each game
foreach(game_source ${sources})
# Create the basename for the game
get_filename_component(game_name ${game_source} NAME)
string(REPLACE ".c" "${OUTPUT_EXT}" game_name ${game_name})
-
+
# Setup the game
add_executable(${game_name} ${game_source})
# Link the libraries
- link_libraries_to_executable(${game_name})
+ target_link_libraries(${game_name} raylib)
endforeach()
# Do the games with subdirectories
diff --git a/games/drturtle/CMakeLists.txt b/games/drturtle/CMakeLists.txt
index bdd91970..f5778d9c 100644
--- a/games/drturtle/CMakeLists.txt
+++ b/games/drturtle/CMakeLists.txt
@@ -1,18 +1,13 @@
-# Setup the project and settings
+cmake_minimum_required(VERSION 2.6)
project(drturtle)
-include("../../cmake/utils.cmake")
-
-
-# Make sure raylib has been built
-# TODO `build` directory should maybe be something else...
-include_directories("../../build/release")
-
# Executable & linking
-add_executable(drturtle 06_drturtle_final.c)
-link_libraries_to_executable(drturtle)
+add_executable(${PROJECT_NAME} 06_drturtle_final.c)
+if (NOT TARGET raylib)
+ find_package(raylib 2.0 REQUIRED)
+endif()
+target_link_libraries(${PROJECT_NAME} raylib)
# Resources
# Copy all of the resource files to the destination
file(COPY "resources/" DESTINATION "resources/")
-
diff --git a/games/just_do/CMakeLists.txt b/games/just_do/CMakeLists.txt
index 4c5e1ee4..f25b6e37 100644
--- a/games/just_do/CMakeLists.txt
+++ b/games/just_do/CMakeLists.txt
@@ -1,21 +1,16 @@
-# Setup the project and settings
+cmake_minimum_required(VERSION 2.6)
project(just_do)
-include("../../cmake/utils.cmake")
-
-
-# Make sure raylib has been built
-# TODO `build` directory should maybe be something else...
-include_directories("../../build/release")
-
# Grab the screens
file(GLOB screen_sources "screens/*.c")
# Executable & linking
-add_executable(just_do just_do.c ${screen_sources})
-link_libraries_to_executable(just_do)
+add_executable(${PROJECT_NAME} ${PROJECT_NAME}.c ${screen_sources})
+if (NOT TARGET raylib)
+ find_package(raylib 2.0 REQUIRED)
+endif()
+target_link_libraries(${PROJECT_NAME} raylib)
# Resources
# Copy all of the resource files to the destination
file(COPY "resources/" DESTINATION "resources/")
-
diff --git a/games/koala_seasons/CMakeLists.txt b/games/koala_seasons/CMakeLists.txt
index f79ab911..7e500d1e 100644
--- a/games/koala_seasons/CMakeLists.txt
+++ b/games/koala_seasons/CMakeLists.txt
@@ -1,21 +1,16 @@
-# Setup the project and settings
+cmake_minimum_required(VERSION 2.6)
project(koala_seasons)
-include("../../cmake/utils.cmake")
-
-
-# Make sure raylib has been built
-# TODO `build` directory should maybe be something else...
-include_directories("../../build/release")
-
# Grab the screens
file(GLOB screen_sources "screens/*.c")
# Executable & linking
-add_executable(koala_seasons koala_seasons.c ${screen_sources})
-link_libraries_to_executable(koala_seasons)
+add_executable(${PROJECT_NAME} ${PROJECT_NAME}.c ${screen_sources})
+if (NOT TARGET raylib)
+ find_package(raylib 2.0 REQUIRED)
+endif()
+target_link_libraries(${PROJECT_NAME} raylib)
# Resources
# Copy all of the resource files to the destination
file(COPY "resources/" DESTINATION "resources/")
-
diff --git a/games/light_my_ritual/CMakeLists.txt b/games/light_my_ritual/CMakeLists.txt
index 11d2e4f4..a35a34e0 100644
--- a/games/light_my_ritual/CMakeLists.txt
+++ b/games/light_my_ritual/CMakeLists.txt
@@ -1,21 +1,16 @@
-# Setup the project and settings
+cmake_minimum_required(VERSION 2.6)
project(light_my_ritual)
-include("../../cmake/utils.cmake")
-
-
-# Make sure raylib has been built
-# TODO `build` directory should maybe be something else...
-include_directories("../../build/release")
-
# Grab the screens
file(GLOB screen_sources "screens/*.c")
# Executable & linking
-add_executable(light_my_ritual light_my_ritual.c ${screen_sources})
-link_libraries_to_executable(light_my_ritual)
+add_executable(${PROJECT_NAME} ${PROJECT_NAME}.c ${screen_sources})
+if (NOT TARGET raylib)
+ find_package(raylib 2.0 REQUIRED)
+endif()
+target_link_libraries(${PROJECT_NAME} raylib)
# Resources
# Copy all of the resource files to the destination
file(COPY "resources/" DESTINATION "resources/")
-
diff --git a/games/skully_escape/CMakeLists.txt b/games/skully_escape/CMakeLists.txt
index 337e1db5..51047ca1 100644
--- a/games/skully_escape/CMakeLists.txt
+++ b/games/skully_escape/CMakeLists.txt
@@ -1,21 +1,16 @@
-# Setup the project and settings
+cmake_minimum_required(VERSION 2.6)
project(skully_escape)
-include("../../cmake/utils.cmake")
-
-
-# Make sure raylib has been built
-# TODO `build` directory should maybe be something else...
-include_directories("../../build/release")
-
# Grab the screens
file(GLOB screen_sources "screens/*.c")
# Executable & linking
-add_executable(skully_escape skully_escape.c player.c monster.c ${screen_sources})
-link_libraries_to_executable(skully_escape)
+add_executable(${PROJECT_NAME} skully_escape.c player.c monster.c ${screen_sources})
+if (NOT TARGET raylib)
+ find_package(raylib 2.0 REQUIRED)
+endif()
+target_link_libraries(${PROJECT_NAME} raylib)
# Resources
# Copy all of the resource files to the destination
file(COPY "resources/" DESTINATION "resources/")
-
diff --git a/games/wave_collector/CMakeLists.txt b/games/wave_collector/CMakeLists.txt
index ca6c37b8..a87dbeda 100644
--- a/games/wave_collector/CMakeLists.txt
+++ b/games/wave_collector/CMakeLists.txt
@@ -1,21 +1,16 @@
-# Setup the project and settings
+cmake_minimum_required(VERSION 2.6)
project(wave_collector)
-include("../../cmake/utils.cmake")
-
-
-# Make sure raylib has been built
-# TODO `build` directory should maybe be something else...
-include_directories("../../build/release")
-
# Grab the screens
file(GLOB screen_sources "screens/*.c")
# Executable & linking
-add_executable(wave_collector wave_collector.c ${screen_sources})
-link_libraries_to_executable(wave_collector)
+add_executable(${PROJECT_NAME} ${PROJECT_NAME}.c ${screen_sources})
+if (NOT TARGET raylib)
+ find_package(raylib 2.0 REQUIRED)
+endif()
+target_link_libraries(${PROJECT_NAME} raylib)
# Resources
# Copy all of the resource files to the destination
file(COPY "resources/" DESTINATION "resources/")
-