Use CACHE variable for other common CMAKE variable 35/15135/3
authorRomain Forlot <romain.forlot@iot.bzh>
Mon, 9 Jul 2018 11:57:28 +0000 (13:57 +0200)
committerRomain Forlot <romain.forlot@iot.bzh>
Mon, 9 Jul 2018 15:03:19 +0000 (17:03 +0200)
This is done to be able to overwite from CLI those variables.
CMAKE_INSTALL_PREFIX is a special case since it is set by default
to '/usr/local' at CMake invocation. So overwriting by CLI is fine
but set it up using config.cmake file not. So since CMake v3.7 there
is a variable to know if this variable has been set by default or not.

Change-Id: I60c5161fa9a4134d100ef709d0966d599871ad44
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
cmake/cmake.d/03-macros.cmake
cmake/common.cmake
samples.d/config.cmake.sample

index 085c249..0d24a40 100644 (file)
@@ -108,6 +108,13 @@ ENDMACRO(LIST_FILTER)
 
 # Generic useful macro
 # -----------------------
+macro(set_install_prefix)
+       if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND INSTALL_PREFIX)
+               message(STATUS "-- Overwrite the CMAKE default install prefix with ${INSTALL_PREFIX}")
+               set(CMAKE_INSTALL_PREFIX ${INSTALL_PREFIX} CACHE PATH "Install prefix" FORCE)
+       endif()
+endmacro()
+
 macro(PROJECT_TARGET_ADD TARGET_NAME)
        set_property(GLOBAL APPEND PROPERTY PROJECT_TARGETS ${TARGET_NAME})
        set(TARGET_NAME ${TARGET_NAME})
index e764d34..8e57b26 100644 (file)
@@ -85,6 +85,7 @@ foreach(file ${system_cmakefiles} ${home_cmakefiles} ${project_cmakefiles})
        include(${file})
 endforeach()
 
+set_install_prefix()
 prevent_in_source_build()
 
 if(DEFINED PROJECT_SRC_DIR_PATTERN)
index 55de5c2..d7268cd 100644 (file)
@@ -76,7 +76,7 @@ set (PKG_REQUIRED_LIST
 # Prefix path where will be installed the files
 # Default: /usr/local (need root permission to write in)
 # ------------------------------------------------------
-#set(CMAKE_INSTALL_PREFIX $ENV{HOME}/opt)
+#set(INSTALL_PREFIX /opt/AGL CACHE PATH "INSTALL PREFIX PATH")
 
 # Customize link option
 # -----------------------------
@@ -127,8 +127,8 @@ set (PKG_REQUIRED_LIST
 
 # (BUG!!!) as PKG_CONFIG_PATH does not work [should be an env variable]
 # ---------------------------------------------------------------------
-set(CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}/lib64/pkgconfig ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-set(LD_LIBRARY_PATH ${CMAKE_INSTALL_PREFIX}/lib64 ${CMAKE_INSTALL_PREFIX}/lib)
+set(CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}/lib64/pkgconfig ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig CACHE PATH 'Prefix Path list used by pkgconfig module')
+set(LD_LIBRARY_PATH ${CMAKE_INSTALL_PREFIX}/lib64 ${CMAKE_INSTALL_PREFIX}/lib CACHE PATH 'Path list where to search for libraries')
 
 # Optional location for config.xml.in
 # -----------------------------------