瀏覽代碼

Add join_paths and join prefix with include/lib dirs (#1383)

Fixes #1380: incorrect usage of CMake paths which causes issues
on some more complicated environments (NixOS especially).
Adam Griffiths 4 年之前
父節點
當前提交
b9ece86ffd
共有 3 個文件被更改,包括 33 次插入2 次删除
  1. 26 0
      cmake/JoinPaths.cmake
  2. 2 2
      raylib.pc.in
  3. 5 0
      src/CMakeLists.txt

+ 26 - 0
cmake/JoinPaths.cmake

@@ -0,0 +1,26 @@
+# This module provides function for joining paths
+# known from most languages
+#
+# Original license:
+# SPDX-License-Identifier: (MIT OR CC0-1.0)
+# Explicit permission given to distribute this module under
+# the terms of the project as described in /LICENSE.rst.
+# Copyright 2020 Jan Tojnar
+# https://github.com/jtojnar/cmake-snips
+#
+# Modelled after Python’s os.path.join
+# https://docs.python.org/3.7/library/os.path.html#os.path.join
+# Windows not supported
+function(join_paths joined_path first_path_segment)
+    set(temp_path "${first_path_segment}")
+    foreach(current_segment IN LISTS ARGN)
+        if(NOT ("${current_segment}" STREQUAL ""))
+            if(IS_ABSOLUTE "${current_segment}")
+                set(temp_path "${current_segment}")
+            else()
+                set(temp_path "${temp_path}/${current_segment}")
+            endif()
+        endif()
+    endforeach()
+    set(${joined_path} "${temp_path}" PARENT_SCOPE)
+endfunction()

+ 2 - 2
raylib.pc.in

@@ -1,7 +1,7 @@
 prefix=@CMAKE_INSTALL_PREFIX@
 exec_prefix=${prefix}
-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+libdir=@libdir_for_pc_file@
+includedir=@includedir_for_pc_file@
 
 Name: raylib
 Description: Simple and easy-to-use library to enjoy videogames programming

+ 5 - 0
src/CMakeLists.txt

@@ -1,6 +1,7 @@
 # Setup the project and settings
 project(raylib C)
 include(GNUInstallDirs)
+include(JoinPaths)
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")
 
 set(PROJECT_VERSION 3.0.0)
@@ -248,6 +249,10 @@ endif(SHARED)
 if (NOT DEFINED PKG_CONFIG_LIBS_EXTRA)
   set(PKG_CONFIG_LIBS_EXTRA "${PKG_CONFIG_LIBS_PRIVATE}")
 endif()
+
+join_paths(libdir_for_pc_file "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}")
+join_paths(includedir_for_pc_file "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}")
+
 configure_file(../raylib.pc.in raylib.pc @ONLY)
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/raylib.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
 configure_file(../cmake/raylib-config-version.cmake raylib-config-version.cmake @ONLY)