Skip to content
Snippets Groups Projects
Commit 51b56d2b authored by Raphael Grimm's avatar Raphael Grimm
Browse files

Add cmake macros

parent c6990275
Loading
......@@ -52,3 +52,59 @@ function(SimoxQtLibrary name srcs incs mocFiles uiFiles)
# add Saba and GraspStudio
TARGET_LINK_LIBRARIES(${name} PUBLIC GraspStudio Saba)
endfunction()
macro(simox_subdirs result curdir)
file(GLOB children ${curdir}/*)
set(${result})
foreach(child ${children})
if(IS_DIRECTORY ${child})
list(APPEND ${result} ${child})
endif()
endforeach()
endmacro()
macro(simox_update_file file content) #macro since we want to provide simox_file_up_to_date
set(simox_file_up_to_date 0)
if(EXISTS "${file}")
file(SHA512 "${file}" _simox_file_sha)
string(SHA512 _simox_cont_sha "${content}")
if("${_simox_cont_sha}" STREQUAL "${_simox_file_sha}")
set(simox_file_up_to_date 1)
endif()
endif()
#write file
if(${simox_file_up_to_date} EQUAL 0)
file(WRITE "${file}" "${content}")
endif()
endmacro()
macro(simox_generate_subdir_headers dir prefix_to_remove out_headers)
string(REPLACE "//" "/" prefix_to_remove_fixed "${prefix_to_remove}/")
string(REPLACE "${prefix_to_remove_fixed}" "" dir_rel "${dir}")
_simox_generate_subdir_headers_impl("${dir}" "${prefix_to_remove_fixed}" ${out_headers})
endmacro()
macro(_simox_generate_subdir_headers_impl dir prefix_to_remove out_headers)
simox_subdirs(subdirs ${dir})
foreach(subdir ${subdirs})
#recurse
_simox_generate_subdir_headers_impl("${subdir}" "${prefix_to_remove}" ${out_headers})
file(GLOB headers ${subdir}/*.h)
list(LENGTH headers n)
string(REGEX REPLACE ".*/" "" subdir_name "${subdir}")
if(NOT ${n} EQUAL 0 AND NOT "${subdir_name}" STREQUAL "detail")
set(subdir_header_abs "${subdir}.h")
string(REPLACE "${prefix_to_remove}" "" subdir_header "${subdir_header_abs}")
list(APPEND ${out_headers} ${subdir_header})
#create file content
set(content "#pragma once\n\n// This file is generated!\n\n")
foreach(header ${headers})
string(REPLACE "${subdir}/" "${subdir_name}/" h "${header}")
set(content "${content}#include \"${h}\"\n")
endforeach()
#check for file change
simox_update_file("${subdir_header_abs}" "${content}")
endif()
endforeach()
endmacro()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment