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 /cmake/LibraryPathToLinkerFlags.cmake | |
| 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 'cmake/LibraryPathToLinkerFlags.cmake')
| -rw-r--r-- | cmake/LibraryPathToLinkerFlags.cmake | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/cmake/LibraryPathToLinkerFlags.cmake b/cmake/LibraryPathToLinkerFlags.cmake new file mode 100644 index 00000000..05942b75 --- /dev/null +++ b/cmake/LibraryPathToLinkerFlags.cmake @@ -0,0 +1,24 @@ +function(library_path_to_linker_flags LD_FLAGS LIB_PATHS) + foreach(L ${LIB_PATHS}) + get_filename_component(DIR ${L} PATH) + get_filename_component(LIBFILE ${L} NAME_WE) + STRING(REGEX REPLACE "^lib" "" FILE ${LIBFILE}) + + if (${L} MATCHES "[.]framework$") + set(FILE_OPT "-framework ${FILE}") + set(DIR_OPT "-F${DIR}") + else() + set(FILE_OPT "-l${FILE}") + set(DIR_OPT "-L${DIR}") + endif() + + if ("${DIR}" STREQUAL "" OR "${DIR}" STREQUAL "${LASTDIR}") + set (DIR_OPT "") + endif() + + set(LASTDIR ${DIR}) + + set(${LD_FLAGS} ${${LD_FLAGS}} ${DIR_OPT} ${FILE_OPT} PARENT_SCOPE) + string (REPLACE ";" " " ${LD_FLAGS} "${${LD_FLAGS}}") + endforeach() +endfunction() |
