Skip to content

Commit 533e59a

Browse files
MrDmitryilia-glushchenko
authored andcommitted
[#36] Use modern CMake features
1 parent 6b90c9c commit 533e59a

File tree

3 files changed

+74
-25
lines changed

3 files changed

+74
-25
lines changed

Arion/ArionCollisionConfig.cmake.in

+37-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,42 @@
1-
# Copyright (C) 2017 by Godlike
1+
# Copyright (C) 2017-2018 by Godlike
22
# This code is licensed under the MIT license (MIT)
33
# (http://opensource.org/licenses/MIT)
44

55
set(PREFIX ${CMAKE_CURRENT_LIST_DIR}/../..)
6+
set(ARION_LINK_LIBRARIES
7+
Epona::Math
8+
)
69

7-
set(Arion_INCLUDE_DIRS ${PREFIX}/@ARION_INSTALL_INCLUDE_DIR@)
8-
set(Arion_LIBRARY_DIRS ${PREFIX}/@ARION_INSTALL_LIBRARY_DIR@)
9-
set(Arion_DEFINITIONS @ARION_DEFINITIONS@)
10-
set(Arion_LIB @ARION_LIB@)
10+
include(CMakeFindDependencyMacro)
11+
12+
find_dependency(EponaMath REQUIRED)
13+
14+
# Describe imported library
15+
add_library(@PROJECT_NAME@ SHARED IMPORTED)
16+
set_target_properties(@PROJECT_NAME@ PROPERTIES
17+
IMPORTED_LOCATION "${PREFIX}/@ARION_INSTALL_LIBRARY_DIR@/$<TARGET_FILE_NAME:@PROJECT_NAME@>"
18+
INTERFACE_INCLUDE_DIRECTORIES "${PREFIX}/@ARION_INSTALL_INCLUDE_DIR@"
19+
INTERFACE_LINK_LIBRARIES "${ARION_LINK_LIBRARIES}"
20+
INTERFACE_COMPILE_DEFINITIONS "@ARION_DEFINITIONS@"
21+
)
22+
23+
# Create aliases to imported library
24+
add_library(@PROJECT_NAME@Proxy INTERFACE)
25+
add_library(@PROJECT_NAME@::@PROJECT_NAME@ ALIAS @PROJECT_NAME@Proxy)
26+
add_library(@ARION_LIB_ALIAS@ ALIAS @PROJECT_NAME@Proxy)
27+
28+
target_compile_definitions(@PROJECT_NAME@Proxy
29+
INTERFACE
30+
@ARION_DEFINITIONS@
31+
)
32+
33+
target_link_libraries(@PROJECT_NAME@Proxy
34+
INTERFACE
35+
@PROJECT_NAME@
36+
${ARION_LINK_LIBRARIES}
37+
)
38+
39+
target_include_directories(@PROJECT_NAME@Proxy
40+
SYSTEM INTERFACE
41+
${PREFIX}/@ARION_INSTALL_INCLUDE_DIR@
42+
)

Arion/CMakeLists.txt

+36-19
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,15 @@ cmake_minimum_required (VERSION 3.1)
77
include(ArionConfig)
88

99
project(${ARION_NAME})
10-
set(CMAKE_CXX_STANDARD 14)
10+
11+
set(ARION_LIB_ALIAS Arion::Collision)
12+
13+
add_library(${PROJECT_NAME} "")
14+
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
15+
add_library(${ARION_LIB_ALIAS} ALIAS ${PROJECT_NAME})
16+
17+
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17)
18+
1119
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
1220

1321
if (NOT CMAKE_BUILD_TYPE)
@@ -25,10 +33,6 @@ if (NOT EPONA_FOUND)
2533
endif()
2634

2735
#Target
28-
include_directories(
29-
${ARION_INCLUDE_DIR}
30-
)
31-
3236
message(STATUS "Version: ${ARION_VERSION}")
3337

3438
set(ARION_HEADERS
@@ -67,25 +71,33 @@ if (MSVC)
6771
)
6872
endif()
6973

70-
add_library(${ARION_LIB}
71-
${ARION_HEADERS}
72-
${ARION_SOURCES}
74+
target_sources(${PROJECT_NAME}
75+
PRIVATE
76+
${ARION_HEADERS}
77+
${ARION_SOURCES}
7378
)
7479

75-
target_compile_definitions(${ARION_LIB} PUBLIC ${ARION_DEFINITIONS})
80+
target_compile_definitions(${PROJECT_NAME}
81+
PUBLIC
82+
${ARION_DEFINITIONS}
83+
)
7684

77-
target_include_directories(${ARION_LIB} PUBLIC
78-
${EPONA_INCLUDE_DIR}
85+
target_include_directories(${PROJECT_NAME}
86+
PUBLIC
87+
${ARION_INCLUDE_DIR}
7988
)
8089

8190
set_target_properties(
82-
${ARION_LIB}
91+
${PROJECT_NAME}
8392
PROPERTIES
8493
VERSION ${ARION_VERSION}
8594
SOVERSION ${ARION_SOVERSION}
8695
)
8796

88-
target_link_libraries(${ARION_LIB} ${EPONA_LIB})
97+
target_link_libraries(${PROJECT_NAME}
98+
PUBLIC
99+
Epona::Math
100+
)
89101

90102
install( DIRECTORY ${GLM_INCLUDE_DIR}/glm
91103
DESTINATION ${ARION_INSTALL_INCLUDE_DIR}
@@ -99,7 +111,7 @@ install( DIRECTORY ${GLM_INCLUDE_DIR}/glm
99111
PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ
100112
)
101113

102-
install( TARGETS ${ARION_LIB}
114+
install( TARGETS ${PROJECT_NAME}
103115
COMPONENT arion_libraries
104116
RUNTIME DESTINATION ${ARION_INSTALL_LIBRARY_DIR}
105117
LIBRARY DESTINATION ${ARION_INSTALL_LIBRARY_DIR}
@@ -116,22 +128,27 @@ install( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
116128
include(CMakePackageConfigHelpers)
117129

118130
write_basic_package_version_file(
119-
${CMAKE_CURRENT_BINARY_DIR}/ArionCollisionConfigVersion.cmake
131+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
120132
VERSION ${ARION_VERSION}
121133
COMPATIBILITY SameMajorVersion
122134
)
123135

124136
configure_file(
125-
${CMAKE_CURRENT_SOURCE_DIR}/ArionCollisionConfig.cmake.in
126-
${CMAKE_CURRENT_BINARY_DIR}/ArionCollisionConfig.cmake
137+
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in
138+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake.gen
127139

128140
@ONLY
129141
)
130142

143+
file(GENERATE
144+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
145+
INPUT ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake.gen
146+
)
147+
131148
install(
132149
FILES
133-
${CMAKE_CURRENT_BINARY_DIR}/ArionCollisionConfig.cmake
134-
${CMAKE_CURRENT_BINARY_DIR}/ArionCollisionConfigVersion.cmake
150+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
151+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
135152
DESTINATION ${ARION_INSTALL_LIBRARY_DIR}
136153
COMPONENT arion_headers
137154
)

0 commit comments

Comments
 (0)