forked from PCMSolver/pcmsolver
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
109 lines (95 loc) · 4.07 KB
/
CMakeLists.txt
File metadata and controls
109 lines (95 loc) · 4.07 KB
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
99
100
101
102
103
104
105
106
107
108
109
cmake_policy (SET CMP0022 NEW)
include_directories(${CMAKE_CURRENT_LIST_DIR})
include_directories(SYSTEM ${CMAKE_CURRENT_LIST_DIR}/utils/getkw)
add_subdirectory(cavity)
add_subdirectory(green)
add_subdirectory(interface)
add_subdirectory(metal)
add_subdirectory(bi_operators)
add_subdirectory(pedra)
add_subdirectory(solver)
add_subdirectory(tsless)
add_subdirectory(utils)
list(APPEND _objects $<TARGET_OBJECTS:cavity>
$<TARGET_OBJECTS:green>
$<TARGET_OBJECTS:interface>
$<TARGET_OBJECTS:metal>
$<TARGET_OBJECTS:bi_operators>
$<TARGET_OBJECTS:pedra>
$<TARGET_OBJECTS:solver>
$<TARGET_OBJECTS:tsless>
$<TARGET_OBJECTS:utils>
$<TARGET_OBJECTS:getkw>
)
if(NOT STATIC_LIBRARY_ONLY)
add_library(pcm-shared SHARED ${_objects})
target_link_libraries(pcm-shared PRIVATE ${LIBC_INTERJECT}
ZLIB::ZLIB)
set_target_properties(pcm-shared PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR}
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN 1
OUTPUT_NAME "pcm"
EXPORT_NAME "pcm")
install(TARGETS pcm-shared
EXPORT "${PROJECT_NAME}Targets-shared"
RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
add_dependencies(pcm-shared generate-config-hpp)
endif()
if(NOT SHARED_LIBRARY_ONLY)
add_library(pcm-static STATIC ${_objects})
target_link_libraries(pcm-static PRIVATE ZLIB::ZLIB)
set_target_properties(pcm-static PROPERTIES COMPILE_FLAGS -D${PROJECT_NAME}_STATIC_DEFINE
OUTPUT_NAME "pcm"
EXPORT_NAME "pcm")
install(TARGETS pcm-static
EXPORT "${PROJECT_NAME}Targets-static"
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
add_dependencies(pcm-static generate-config-hpp)
endif()
if(STATIC_LIBRARY_ONLY)
add_library(${PROJECT_NAME} ALIAS pcm-static)
else ()
add_library(${PROJECT_NAME} ALIAS pcm-shared)
endif()
include(GenerateExportHeader)
generate_export_header(${PROJECT_NAME}
BASE_NAME "PCMSolver"
EXPORT_MACRO_NAME "PCMSolver_EXPORT"
EXPORT_FILE_NAME "PCMSolverExport.h"
DEPRECATED_MACRO_NAME "PCMSolver_DEPRECATED"
NO_EXPORT_MACRO_NAME "PCMSolver_NO_EXPORT"
STATIC_DEFINE "PCMSolver_STATIC_DEFINE"
NO_DEPRECATED_MACRO_NAME "PCMSolver_NO_DEPRECATED"
DEFINE_NO_DEPRECATED)
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/PCMSolverExport.h DESTINATION ${PROJECT_BINARY_DIR}/include)
install(FILES ${PROJECT_BINARY_DIR}/include/PCMSolverExport.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
# This directory contains source file for executables
if(BUILD_STANDALONE)
add_subdirectory(bin)
endif()
# <<< Export interface >>>
if(NOT STATIC_LIBRARY_ONLY)
if (APPLE)
set_target_properties(pcm-shared PROPERTIES LINK_FLAGS "-undefined dynamic_lookup")
endif()
target_compile_definitions(pcm-shared INTERFACE USING_${PROJECT_NAME})
target_include_directories(pcm-shared INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
endif()
if(NOT SHARED_LIBRARY_ONLY)
target_compile_definitions(pcm-static INTERFACE USING_${PROJECT_NAME})
target_include_directories(pcm-static INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
endif()
# <<< Export Config >>>
# explicit "share" not "DATADIR" for CMake search path
set (CMAKECONFIG_INSTALL_DIR "share/cmake/${PROJECT_NAME}")
if(NOT STATIC_LIBRARY_ONLY)
install (EXPORT "${PROJECT_NAME}Targets-shared"
NAMESPACE "${PROJECT_NAME}::"
DESTINATION ${CMAKECONFIG_INSTALL_DIR})
endif()
if(NOT SHARED_LIBRARY_ONLY)
install (EXPORT "${PROJECT_NAME}Targets-static"
NAMESPACE "${PROJECT_NAME}::"
DESTINATION ${CMAKECONFIG_INSTALL_DIR})
endif()