]> Creatis software - cpPlugins.git/blobdiff - appli/bash/CMakeLists.txt
...
[cpPlugins.git] / appli / bash / CMakeLists.txt
index 33785d170abd36d355c24699423e3d8cb88ec74a..aa50398a4d02800c6f00516ecd210083218f9e55 100644 (file)
@@ -1,15 +1,59 @@
-## =========================
-## = Command line programs =
-## =========================
-
-SET(
-  BASH_PROGRAMS
-  cpPlugins_createHost
-  )
-
-FOREACH(prog ${BASH_PROGRAMS}) 
-  ADD_EXECUTABLE(${prog} ${prog}.cxx)
-  TARGET_LINK_LIBRARIES(${prog} ${Boost_LIBRARIES})
-ENDFOREACH(prog)
+SET(_pfx "cpPlugins_bash_")
+SET(_src_dir ${CMAKE_CURRENT_SOURCE_DIR})
+SET(_bin_dir ${CMAKE_CURRENT_BINARY_DIR})
+
+## ========================
+## == Build sources list ==
+## ========================
+
+FILE(GLOB _sources RELATIVE "${_src_dir}" "${_src_dir}/*.cxx")
+FILE(GLOB _sources_cfg RELATIVE "${_src_dir}" "${_src_dir}/*.cxx.in")
+FILE(GLOB _headers_cfg RELATIVE "${_src_dir}" "${_src_dir}/*.h.in")
+
+## =======================
+## == Configure sources ==
+## =======================
+
+FOREACH(_cfg ${_headers_cfg})
+  GET_FILENAME_COMPONENT(_ext ${_cfg} EXT)
+  STRING(LENGTH ${_ext} _ext_len)
+  STRING(SUBSTRING ${_ext} 1 ${_ext_len} _ext_name)
+  GET_FILENAME_COMPONENT(_real_ext ${_ext_name} NAME_WE)
+  GET_FILENAME_COMPONENT(_name ${_cfg} NAME_WE)
+  CONFIGURE_FILE(
+    ${_src_dir}/${_cfg}
+    ${_bin_dir}/${_name}.${_real_ext} @ONLY
+    )
+ENDFOREACH(_cfg)
+
+FOREACH(_cfg ${_sources_cfg})
+  GET_FILENAME_COMPONENT(_ext ${_cfg} EXT)
+  STRING(LENGTH ${_ext} _ext_len)
+  STRING(SUBSTRING ${_ext} 1 ${_ext_len} _ext_name)
+  GET_FILENAME_COMPONENT(_real_ext ${_ext_name} NAME_WE)
+  GET_FILENAME_COMPONENT(_name ${_cfg} NAME_WE)
+  CONFIGURE_FILE(
+    ${_src_dir}/${_cfg}
+    ${_bin_dir}/${_name}.${_real_ext} @ONLY
+    )
+  LIST(APPEND _sources ${_bin_dir}/${_name}.${_real_ext})
+ENDFOREACH(_cfg)
+
+## ==========================
+## == Compile source files ==
+## ==========================
+
+FOREACH(_src ${_sources})
+  GET_FILENAME_COMPONENT(_name ${_src} NAME_WE)
+  SET(_prog ${_pfx}${_name})
+  ADD_EXECUTABLE(${_prog} ${_src})
+  INSTALL(
+    TARGETS ${_prog}
+    RUNTIME DESTINATION bin
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib/static
+    )
+  SET(${_prog}_APP ${_prog} CACHE INTERNAL "bash program ${_prog}")
+ENDFOREACH(_src)
 
 ## eof - $RCSfile$