mirror of
https://github.com/OpenCMT/uLib.git
synced 2025-12-06 07:21:31 +01:00
[uLib Geometry]
non working version! + adds ProgrammableAccessor + renaming of some Image structures ...
This commit is contained in:
186
CMake/uLibTargetMacros.cmake
Normal file
186
CMake/uLibTargetMacros.cmake
Normal file
@@ -0,0 +1,186 @@
|
||||
|
||||
include(uLibMacros)
|
||||
include_guard(ULIB_TARGET_MACRO_CMAKE)
|
||||
|
||||
## adds library target
|
||||
macro(uLib_add_library name)
|
||||
add_library(${name} ${ARGN})
|
||||
if(NOT ULIB_INSTALL_NO_LIBRARIES)
|
||||
set_property(GLOBAL APPEND PROPERTY ULIB_TARGETS ${name})
|
||||
endif(NOT ULIB_INSTALL_NO_LIBRARIES)
|
||||
endmacro(uLib_add_library)
|
||||
|
||||
################################################################################
|
||||
## Add SHARED library target ##
|
||||
|
||||
# HEADERS and SOURCES must be defined as list of library headers and sources
|
||||
macro(uLib_add_shared_library name)
|
||||
if(COMMAND cmake_policy)
|
||||
# cmake_policy( SET CMP0022 NEW )
|
||||
endif(COMMAND cmake_policy)
|
||||
|
||||
set(mname ${PACKAGE_LIBPREFIX}${name})
|
||||
|
||||
if(SOURCES)
|
||||
uLib_add_library(${mname} SHARED ${SOURCES})
|
||||
set(shared ${ULIB_SHARED_LIBRARIES})
|
||||
list(APPEND shared ${mname})
|
||||
set(ULIB_SHARED_LIBRARIES ${shared} PARENT_SCOPE)
|
||||
source_group("${project_name}\\${name}" FILES ${SOURCES})
|
||||
set_target_properties(${mname} PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_SOVERSION}
|
||||
INTERFACE_LINK_LIBRARIES "${LIBRARIES}"
|
||||
LINK_INTERFACE_LIBRARIES "${LIBRARIES}" ## <- ok for cmake from 2.12 ?
|
||||
IMPORTED_LINK_INTERFACE_LIBRARIES "${LIBRARIES}" ## <- breaks cmake after 2.11 ?
|
||||
# PUBLIC_HEADER ""
|
||||
)
|
||||
debug(LIBRARIES)
|
||||
|
||||
install(TARGETS ${mname}
|
||||
EXPORT "${PROJECT_NAME}Targets"
|
||||
RUNTIME DESTINATION ${PACKAGE_INSTALL_BIN_DIR} COMPONENT bin
|
||||
LIBRARY DESTINATION ${PACKAGE_INSTALL_LIB_DIR} COMPONENT lib
|
||||
# PUBLIC_HEADER DESTINATION ${PACKAGE_INSTALL_INC_DIR} COMPONENT dev
|
||||
)
|
||||
endif(SOURCES)
|
||||
|
||||
if(HEADERS)
|
||||
foreach(header ${HEADERS})
|
||||
install(FILES ${header} DESTINATION ${PACKAGE_INSTALL_INC_DIR}/${name})
|
||||
endforeach(header)
|
||||
endif(HEADERS)
|
||||
|
||||
endmacro(uLib_add_shared_library)
|
||||
|
||||
|
||||
################################################################################
|
||||
## Add Target ##
|
||||
|
||||
macro(uLib_add_target name)
|
||||
debug(${name})
|
||||
add_executable(${name} ${ARGN})
|
||||
set_property(GLOBAL APPEND PROPERTY ULIB_TARGETS ${name})
|
||||
|
||||
set(exported ${ULIB_EXPORTED_TARGETS})
|
||||
list(APPEND exported ${name})
|
||||
set(ULIB_EXPORTED_TARGETS ${exported} PARENT_SCOPE)
|
||||
|
||||
install(TARGETS ${name}
|
||||
EXPORT "${PROJECT_NAME}Targets"
|
||||
RUNTIME DESTINATION ${PACKAGE_INSTALL_BIN_DIR} COMPONENT bin
|
||||
)
|
||||
ENDMACRO(uLib_add_target)
|
||||
|
||||
|
||||
|
||||
################################################################################
|
||||
## TESTS ##
|
||||
|
||||
# TESTS and LIBRARIES must be defined
|
||||
macro(uLib_add_tests name)
|
||||
foreach(tn ${TESTS})
|
||||
add_executable(${tn} EXCLUDE_FROM_ALL ${tn}.cpp)
|
||||
add_test(${tn} ${PACKAGE_INSTALL_BIN_DIR}/${tn})
|
||||
|
||||
# adds dependencies to all selected modules in uLib
|
||||
# foreach(module ${ULIB_SELECTED_MODULES})
|
||||
# add_dependencies(${tn} ${project_name}${module})
|
||||
# endforeach(module)
|
||||
|
||||
# adds libraries dependencies
|
||||
foreach(library ${LIBRARIES})
|
||||
target_link_libraries(${tn} ${library})
|
||||
endforeach(library)
|
||||
|
||||
endforeach(tn)
|
||||
|
||||
# custom target to compile all tests
|
||||
add_custom_target(all-${name}-tests)
|
||||
add_dependencies(all-${name}-tests ${TESTS})
|
||||
endmacro(uLib_add_tests name)
|
||||
|
||||
|
||||
################################################################################
|
||||
## UTILS ##
|
||||
|
||||
# UTILS and LIBRARIES must be defined
|
||||
macro(uLib_add_utils name)
|
||||
foreach(tn ${UTILS})
|
||||
add_executable(${tn} ${tn}.cpp)
|
||||
install(TARGETS ${tn} RUNTIME DESTINATION bin)
|
||||
|
||||
# adds dependencies to all selected modules in uLib
|
||||
# foreach(module ${ULIB_SELECTED_MODULES})
|
||||
# add_dependencies(${tn} ${project_name}${module})
|
||||
# endforeach(module)
|
||||
|
||||
# adds libraries dependencies
|
||||
foreach(library ${LIBRARIES})
|
||||
target_link_libraries(${tn} ${library})
|
||||
endforeach(library)
|
||||
|
||||
endforeach(tn)
|
||||
|
||||
# custom target to compile all tests
|
||||
add_custom_target(all-${name})
|
||||
add_dependencies(all-${name} ${UTILS})
|
||||
|
||||
endmacro(uLib_add_utils name)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function(get_gcc_compile_flags target out_flags)
|
||||
string(TOUPPER "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}" name)
|
||||
set(flags "${${name}} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_COMPILER_ARG1}")
|
||||
get_target_property(value ${target} COMPILE_FLAGS)
|
||||
if (value)
|
||||
list(APPEND flags ${value})
|
||||
endif()
|
||||
get_target_property(value ${target} TYPE)
|
||||
get_target_property(value ${target} COMPILE_DEFINITIONS)
|
||||
if (value)
|
||||
foreach(item ${value})
|
||||
list(APPEND flags "-D${item}")
|
||||
endforeach()
|
||||
endif()
|
||||
STRING(TOUPPER "COMPILE_DEFINITIONS_${CMAKE_BUILD_TYPE}" name)
|
||||
get_target_property(value ${target} ${name})
|
||||
if (value)
|
||||
foreach(item ${value})
|
||||
list(APPEND flags "-D${item}")
|
||||
endforeach()
|
||||
endif()
|
||||
get_directory_property(value DEFINITIONS)
|
||||
if (value)
|
||||
list(APPEND flags ${value})
|
||||
endif()
|
||||
get_directory_property(value INCLUDE_DIRECTORIES)
|
||||
if (value)
|
||||
foreach(item ${value})
|
||||
list(APPEND flags "-I${item}")
|
||||
endforeach()
|
||||
endif()
|
||||
set(${out_flags} ${flags} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(get_gcc_link_flags target out_flags)
|
||||
set(flags)
|
||||
get_target_property(value ${target} LINK_FLAGS_RELEASE)
|
||||
if (value)
|
||||
message(STATUS "-> ${flags}")
|
||||
list(APPEND flags ${value})
|
||||
endif()
|
||||
get_directory_property(value LINK_DIRECTORIES)
|
||||
if (value)
|
||||
message(STATUS "-> ${flags}")
|
||||
foreach(item ${value})
|
||||
list(APPEND flags "-L${item}")
|
||||
endforeach()
|
||||
endif()
|
||||
message(STATUS "-> ${flags}")
|
||||
set(${out_flags} ${flags} PARENT_SCOPE)
|
||||
endfunction()
|
||||
Reference in New Issue
Block a user