]> Creatis software - cpPlugins.git/blobdiff - cmake/Functions.cmake
...
[cpPlugins.git] / cmake / Functions.cmake
index 4da395c6ad91dfb57a8adb4df2d52c2910076fca..9beaaae0944581c1a8bc4545f0952b9ff207e709 100644 (file)
@@ -59,13 +59,18 @@ ENDFUNCTION()
 
 ## -------------------------------------------------------------------------
 FUNCTION(
-  CreateLib
-  lib_name
-  lib_type
+  PrepareSourceFiles
+  out_sources_list
+  out_headers_list
+  out_headers_paths
   )
+SET(_config_extensions .c.in .cpp.in .cxx.in .h.in .hpp.in .hxx.in .ui.in)
+SET(_sources_extensions .c .cpp .cxx)
+SET(_headers_extensions .h .hpp .hxx)
+SET(_qt_ui_extensions .ui)
+SET(_demangler_extensions .d)
 
 ## -- Configure inputs
-SET(_config_extensions .c.in .cpp.in .cxx.in .h.in .hpp.in .hxx.in .ui.in)
 SET(_all_files)
 FOREACH(_file ${ARGN})
   GET_FILENAME_COMPONENT(_ext ${_file} EXT)
@@ -89,10 +94,6 @@ FOREACH(_file ${ARGN})
 ENDFOREACH(_file)
 
 ## -- Separate files
-SET(_sources_extensions .c .cpp .cxx)
-SET(_headers_extensions .h .hpp .hxx)
-SET(_qt_ui_extensions .ui)
-SET(_demangler_extensions .d)
 SET(_srcs)
 SET(_hdrs)
 SET(_qts)
@@ -164,8 +165,22 @@ FOREACH(_hdr ${_hdrs})
     LIST(APPEND _hdrs_paths ${_path})
   ENDIF(${_path_idx} EQUAL -1)
 ENDFOREACH(_hdr)
+
+SET(${out_sources_list} ${_srcs} PARENT_SCOPE)
+SET(${out_headers_list} ${_hdrs} PARENT_SCOPE)
+SET(${out_headers_paths} ${_hdrs_paths} PARENT_SCOPE)
+
+ENDFUNCTION()
+
+## -------------------------------------------------------------------------
+FUNCTION(
+  CreateLib
+  lib_name
+  lib_type
+  )
+PrepareSourceFiles(_srcs _hdrs _paths ${ARGN})
 INCLUDE_DIRECTORIES(
-  ${_hdrs_paths}
+  ${_paths}
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_BINARY_DIR}
   )
@@ -178,8 +193,14 @@ IF(_srcs)
     EXPORT_FILE_NAME ${lib_name}_Export.h
     STATIC_DEFINE ${lib_name}_BUILT_AS_STATIC
     )
+  IF(${prj_NAME}_All_Headers)
+    SET(_hdr_tmp "${${prj_NAME}_All_Headers};${_hdrs}")
+  ELSE(${prj_NAME}_All_Headers)
+    SET(_hdr_tmp "${_hdrs}")
+  ENDIF(${prj_NAME}_All_Headers)
+  LIST(REMOVE_DUPLICATES _hdr_tmp)
+  SET(${prj_NAME}_All_Headers ${_hdr_tmp} CACHE INTERNAL "All headers." FORCE)
 ENDIF(_srcs)
-
 ENDFUNCTION()
 
 ## -------------------------------------------------------------------------
@@ -296,4 +317,31 @@ CreateLib(${lib_name} SHARED ${_files})
 
 ENDFUNCTION()
 
+## -------------------------------------------------------------------------
+FUNCTION(
+  CompileAppFromDir
+  app_name
+  app_dir
+  )
+OPTION(BUILD_${app_name} "Build ${app_name}" OFF)
+IF(BUILD_${app_name})
+  FILE(GLOB_RECURSE _files "${app_dir}/*")
+  PrepareSourceFiles(_srcs _hdrs _paths ${_files} ${ARGN})
+  INCLUDE_DIRECTORIES(
+    ${_paths}
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    ${CMAKE_CURRENT_BINARY_DIR}
+    )
+  IF(_srcs)
+    SET(_app_os_target)
+    IF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+      SET(_app_os_target WIN32)
+      ELSEIF(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
+      SET(_app_os_target MACOSX_BUNDLE)
+    ENDIF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+    ADD_EXECUTABLE(${app_name} ${_app_os_target} ${_srcs} ${_hdrs})
+  ENDIF(_srcs)
+ENDIF(BUILD_${app_name})
+ENDFUNCTION()
+
 ## eof - $RCSfile$