Advertisement
pveselov

cmake influence example

May 15th, 2017
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 1.93 KB | None | 0 0
  1. cmake_minimum_required(VERSION 3.6)
  2.  
  3. set(CMAKE_C_STANDARD 11)
  4. set(CMAKE_VERBOSE_MAKEFILE on)
  5. set(CMAKE_C_VISIBILITY_PRESET hidden)
  6.  
  7. # thanks to http://stackoverflow.com/questions/7172670
  8. function(join OUTPUT GLUE)
  9.     set(_TMP_RESULT "")
  10.     set(_GLUE "") # effective glue is empty at the beginning
  11.     foreach(arg ${ARGN})
  12.         set(_TMP_RESULT "${_TMP_RESULT}${_GLUE}${arg}")
  13.         set(_GLUE "${GLUE}")
  14.     endforeach()
  15.     set(${OUTPUT} "${_TMP_RESULT}" PARENT_SCOPE)
  16. endfunction(join)
  17.  
  18. function(append_env NAME VAL)
  19.     set(TMP $ENV{${NAME}})
  20.     set(ENV{${NAME}} "${TMP} ${VAL}")
  21. endfunction(append_env)
  22.  
  23. function(set_empty OUTPUT VAL)
  24.     if ((NOT DEFINED ${OUTPUT}) OR "${OUTPUT}" STREQUAL "")
  25.         set(${OUTPUT} "${VAL}" PARENT_SCOPE)
  26.     endif()
  27. endfunction(set_empty)
  28.  
  29. function(influence_pkg_spec TGT PREFIX)
  30.  
  31.     if (TARGET ${TGT})
  32.         join(TMP " " ${${PREFIX}_CFLAGS})
  33.         target_compile_options(${TGT} PUBLIC ${TMP})
  34.         join(TMP " " ${${PREFIX}_CFLAGS_OTHER})
  35.         target_compile_options(${TGT} PUBLIC ${TMP})
  36.         join(TMP " " ${${PREFIX}_LDFLAGS})
  37.         set_property(TARGET ${TGT} APPEND_STRING PROPERTY LINK_FLAGS " ${TMP} ")
  38.         join(TMP " " ${${PREFIX}_LDFLAGS_OTHER})
  39.         set_property(TARGET ${TGT} APPEND_STRING PROPERTY LINK_FLAGS " ${TMP} ")
  40.     endif()
  41.  
  42. endfunction(influence_pkg_spec)
  43.  
  44. function(influence_pkg PREFIX)
  45.     if (${PREFIX}_FOUND)
  46.         influence_pkg_spec(test1 ${PREFIX})
  47.     endif()
  48. endfunction(influence_pkg)
  49.  
  50. set(ENV{CMAKE_APPBUNDLE_PATH} "/opt/soft/cjose")
  51. set_property(GLOBAL PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
  52. set_property(GLOBAL PROPERTY BUILD_WITH_INSTALL_RPATH TRUE)
  53. set(LIB_SOURCE ${LIB_SOURCE} linux_port/config.h linux_port/port.c)
  54.  
  55. add_executable(test1 test.c)
  56.  
  57.  
  58. include(FindPkgConfig)
  59.  
  60. pkg_check_modules(JSONC REQUIRED json-c)
  61. pkg_check_modules(CJOSE REQUIRED cjose)
  62.  
  63. influence_pkg("JSONC")
  64. influence_pkg("CJOSE")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement