diff options
| author | Ahmad Fatoum <[email protected]> | 2018-07-28 16:08:41 +0200 |
|---|---|---|
| committer | Ahmad Fatoum <[email protected]> | 2018-07-29 12:35:35 +0200 |
| commit | 3f097263310c3993a742891bce4dc00892aa5c3d (patch) | |
| tree | 0edbf1dec83be178ebe2978aecd29dcf5828030a /games | |
| parent | 3e5093eab0ef4949e9e08fda5de0cd3d31b7e2c1 (diff) | |
| download | raylib-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.txt | 15 | ||||
| -rw-r--r-- | games/drturtle/CMakeLists.txt | 17 | ||||
| -rw-r--r-- | games/just_do/CMakeLists.txt | 17 | ||||
| -rw-r--r-- | games/koala_seasons/CMakeLists.txt | 17 | ||||
| -rw-r--r-- | games/light_my_ritual/CMakeLists.txt | 17 | ||||
| -rw-r--r-- | games/skully_escape/CMakeLists.txt | 17 | ||||
| -rw-r--r-- | games/wave_collector/CMakeLists.txt | 17 |
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/") - |
