blob: eec5346a0d5308413bd85e19202aafcf3bd1f554 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5b8d2abc..5f0dc7d9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -90,6 +90,8 @@ endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
SET(CMAKE_MODULE_PATH "${CMAKE_ROOT}/Modules;${PROJECT_SOURCE_DIR}/cmake/Modules")
+include(print_target_properties)
+
SET(CMAKE_Fortran_MODULE_DIRECTORY
${PROJECT_BINARY_DIR}/fmodules CACHE PATH "Directory for Fortran modules")
@@ -373,6 +375,12 @@ FIND_PACKAGE(MMG)
IF(MMG_FOUND)
SET(HAVE_MMG TRUE CACHE BOOL "Has Mmg tools for Elmer/Ice Mesh adaptation" )
+
+ print_target_properties(Mmg::libmmg2d_so)
+ print_target_properties(Mmg::libmmg3d_so)
+
+ get_target_property(MMG_LIBRARY Mmg::libmmg3d_so LOCATION)
+ get_target_property(MMG_INCLUDE_DIR Mmg::libmmg3d_so INTERFACE_INCLUDE_DIRECTORIES)
GET_FILENAME_COMPONENT(MMG_LIBDIR ${MMG_LIBRARY} DIRECTORY)
MARK_AS_ADVANCED(HAVE_MMG)
diff --git a/ElmerGUI/Application/CMakeLists.txt b/ElmerGUI/Application/CMakeLists.txt
index 9ba8dee1..74dd5ddb 100644
--- a/ElmerGUI/Application/CMakeLists.txt
+++ b/ElmerGUI/Application/CMakeLists.txt
@@ -243,6 +244,7 @@ ENDIF()
IF(WITH_VTK)
TARGET_LINK_LIBRARIES(ElmerGUI ${VTK_LIBRARIES})
+ print_target_properties(${VTK_LIBRARIES})
IF(VTK_MAJOR_VERSION VERSION_LESS 6)
TARGET_LINK_LIBRARIES(ElmerGUI QVTK)
ENDIF()
diff --git a/cmake/Modules/print_target_properties.cmake b/cmake/Modules/print_target_properties.cmake
new file mode 100644
index 00000000..71c1715b
--- /dev/null
+++ b/cmake/Modules/print_target_properties.cmake
@@ -0,0 +1,54 @@
+## https://stackoverflow.com/questions/32183975/how-to-print-all-the-properties-of-a-target-in-cmake/56738858#56738858
+## https://stackoverflow.com/a/56738858/3743145
+# vim: set sw=2 ts=2 et:
+
+cmake_policy(SET CMP0057 NEW)
+
+## Get all properties that cmake supports
+execute_process(COMMAND cmake --help-property-list OUTPUT_VARIABLE CMAKE_PROPERTY_LIST)
+## Convert command output into a CMake list
+STRING(REGEX REPLACE ";" "\\\\;" CMAKE_PROPERTY_LIST "${CMAKE_PROPERTY_LIST}")
+STRING(REGEX REPLACE "\n" ";" CMAKE_PROPERTY_LIST "${CMAKE_PROPERTY_LIST}")
+
+list(REMOVE_DUPLICATES CMAKE_PROPERTY_LIST)
+
+function(print_target_properties)
+ if(CMAKE_BUILD_TYPE)
+ string(TOUPPER ${CMAKE_BUILD_TYPE} CONFIG)
+ endif()
+
+ set(targets_to_check ${ARGV})
+ set(targets_to_print)
+ while(targets_to_check)
+ list(POP_FRONT targets_to_check tgt)
+ if(NOT TARGET ${tgt})
+ message("There is no target: ${tgt}")
+ continue()
+ endif()
+ if(tgt IN_LIST targets_to_print)
+ message("Already visited target: ${tgt}")
+ continue()
+ endif()
+ list(APPEND targets_to_print ${tgt})
+ get_target_property(links ${tgt} INTERFACE_LINK_LIBRARIES)
+ get_target_property(links_release ${tgt} INTERFACE_LINK_LIBRARIES_RELEASE)
+ if(links)
+ list(APPEND targets_to_check ${links})
+ endif()
+ if(links_release)
+ list(APPEND targets_to_check ${links_release})
+ endif()
+ list(REMOVE_DUPLICATES targets_to_check)
+ endwhile()
+
+ foreach(tgt ${targets_to_print})
+ foreach (prop ${CMAKE_PROPERTY_LIST})
+ string(REPLACE "<CONFIG>" "${CONFIG}" prop ${prop})
+ get_target_property(propval ${tgt} ${prop})
+ if(propval)
+ message ("${tgt} ${prop} = ${propval}")
+ endif()
+ endforeach()
+ endforeach()
+endfunction()
+
|