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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
From 70e0b8359855c0d29c45d1ea7893fdbdb72fa999 Mon Sep 17 00:00:00 2001
From: ax487 <ax487@gmx.de>
Date: Mon, 28 Oct 2019 12:57:43 +0100
Subject: [PATCH 1/2] Fix install on linux
---
build/cmake/CMakeLists.txt | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)
diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt
index 6c171c9..dafb92d 100644
--- a/build/cmake/CMakeLists.txt
+++ b/build/cmake/CMakeLists.txt
@@ -69,13 +69,13 @@ if(ENABLE_OPENMP)
endif()
# Define variables to use for organizing the installation.
-include(GNUInstallDirs)
+include(GNUInstallDirs)
if(WIN32)
set(COLPACK_INSTALL_CMAKEDIR ColPack_libs)
set(COLPACK_INSTALL_EXAMPLESBINDIR ColPack_examples)
else()
- set(COLPACK_INSTALL_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/ColPack_libs)
+ set(COLPACK_INSTALL_CMAKEDIR "lib/cmake/ColPack")
# To follow the UNIX Filsystem Hierarchy Standard, we should install
# examples somewhere else:
set(COLPACK_INSTALL_EXAMPLESBINDIR ${CMAKE_INSTALL_LIBDIR}/ColPack_examples)
@@ -141,10 +141,7 @@ endif()
# "EXPORT" helps with creating a ColPackConfig.cmake file to place in the
# installation, to help downstream projects use ColPack.
-install(TARGETS ColPack_static EXPORT ColPackTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/archive
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/library
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}/runtime)
+install(TARGETS ColPack_static EXPORT ColPackTargets)
# Shared library.
@@ -170,12 +167,9 @@ if(ENABLE_OPENMP)
target_link_libraries(ColPack_shared PRIVATE ${OpenMP_CXX_FLAGS})
endif()
-install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ColPack_headers)
+install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ColPack)
-install(TARGETS ColPack_shared EXPORT ColPackTargets
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/shared_archive
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/shared_library
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}/shared_runtime)
+install(TARGETS ColPack_shared EXPORT ColPackTargets)
From f2395664ec7819cd72bfdca23ecc0a3f2f362246 Mon Sep 17 00:00:00 2001
From: ax487 <ax487@gmx.de>
Date: Mon, 28 Oct 2019 13:43:26 +0100
Subject: [PATCH 2/2] Added namespaces to exported targets
---
build/cmake/CMakeLists.txt | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt
index dafb92d..3722c38 100644
--- a/build/cmake/CMakeLists.txt
+++ b/build/cmake/CMakeLists.txt
@@ -75,7 +75,7 @@ if(WIN32)
set(COLPACK_INSTALL_CMAKEDIR ColPack_libs)
set(COLPACK_INSTALL_EXAMPLESBINDIR ColPack_examples)
else()
- set(COLPACK_INSTALL_CMAKEDIR "lib/cmake/ColPack")
+ set(COLPACK_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/ColPack")
# To follow the UNIX Filsystem Hierarchy Standard, we should install
# examples somewhere else:
set(COLPACK_INSTALL_EXAMPLESBINDIR ${CMAKE_INSTALL_LIBDIR}/ColPack_examples)
@@ -132,7 +132,7 @@ target_include_directories(ColPack_static PRIVATE
# "$<BUILD_INTERFACE:${COLPACK_SOURCE_INCLUDE_DIRS}>")
# For clients of an installation of ColPack.
target_include_directories(ColPack_static INTERFACE
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/ColPack>)
if(ENABLE_OPENMP)
set_target_properties(ColPack_static PROPERTIES COMPILE_FLAGS
@@ -141,7 +141,8 @@ endif()
# "EXPORT" helps with creating a ColPackConfig.cmake file to place in the
# installation, to help downstream projects use ColPack.
-install(TARGETS ColPack_static EXPORT ColPackTargets)
+install(TARGETS ColPack_static EXPORT ColPackTargets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
# Shared library.
@@ -159,7 +160,7 @@ target_include_directories(ColPack_shared PRIVATE
# "$<BUILD_INTERFACE:${COLPACK_SOURCE_INCLUDE_DIRS}>")
# For clients of an installation of ColPack.
target_include_directories(ColPack_shared INTERFACE
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/ColPack>)
if(ENABLE_OPENMP)
set_target_properties(ColPack_shared PROPERTIES COMPILE_FLAGS
@@ -248,23 +249,30 @@ endforeach()
# Create files that define the ColPack targets to import into other projects.
# https://cmake.org/cmake/help/v3.1/manual/cmake-packages.7.html
-install(EXPORT ColPackTargets DESTINATION ${COLPACK_INSTALL_CMAKEDIR})
+
+install(EXPORT ColPackTargets
+ DESTINATION ${COLPACK_INSTALL_CMAKEDIR}
+ NAMESPACE "ColPack::")
# CMake Config file., and version file, which CMake will look for when
# downstream projects use find_package(ColPack).
include(CMakePackageConfigHelpers)
# The ConfigVersion file determines if an installed copy of ColPack is
# compatible with a user's requested version for ColPack.
+
write_basic_package_version_file(
"${CMAKE_BINARY_DIR}/ColPackConfigVersion.cmake"
VERSION ${COLPACK_VERSION}
COMPATIBILITY AnyNewerVersion)
+
configure_package_config_file(ColPackConfig.cmake.in
"${CMAKE_BINARY_DIR}/ColPackConfigToInstall.cmake"
INSTALL_DESTINATION ${COLPACK_INSTALL_CMAKEDIR}
PATH_VARS CMAKE_INSTALL_PREFIX)
+
install(FILES "${CMAKE_BINARY_DIR}/ColPackConfigToInstall.cmake"
DESTINATION ${COLPACK_INSTALL_CMAKEDIR}
RENAME ColPackConfig.cmake)
+
install(FILES "${CMAKE_BINARY_DIR}/ColPackConfigVersion.cmake"
DESTINATION ${COLPACK_INSTALL_CMAKEDIR})
|