Skip to content

Commit f38eba7

Browse files
authored
Make CMake install files relocatable (#77)
1 parent ec56d47 commit f38eba7

File tree

3 files changed

+45
-23
lines changed

3 files changed

+45
-23
lines changed

CMakeLists.txt

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
cmake_minimum_required(VERSION 3.5)
22
project(trantor)
33
add_library(${PROJECT_NAME} STATIC)
4-
# if(MSVC) target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX) else()
5-
# target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -pedantic)
6-
# endif()
4+
5+
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules/)
76

87
set(TRANTOR_MAJOR_VERSION 1)
98
set(TRANTOR_MINOR_VERSION 0)
@@ -21,17 +20,6 @@ set(INSTALL_TRANTOR_CMAKE_DIR
2120
${DEF_INSTALL_TRANTOR_CMAKE_DIR}
2221
CACHE PATH "Installation directory for cmake files")
2322

24-
# Make relative paths absolute (needed later on)
25-
foreach(p
26-
LIB
27-
INCLUDE
28-
TRANTOR_CMAKE)
29-
set(var INSTALL_${p}_DIR)
30-
if(NOT IS_ABSOLUTE "${${var}}")
31-
set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
32-
endif()
33-
endforeach()
34-
3523
# include directories
3624
target_include_directories(
3725
${PROJECT_NAME}
@@ -76,16 +64,14 @@ endif(WIN32)
7664

7765
find_package(OpenSSL)
7866
if(OpenSSL_FOUND)
79-
target_include_directories(${PROJECT_NAME} PRIVATE ${OPENSSL_INCLUDE_DIR})
80-
target_link_libraries(${PROJECT_NAME} PRIVATE ${OPENSSL_LIBRARIES})
81-
add_definitions(-DUSE_OPENSSL)
67+
target_link_libraries(${PROJECT_NAME} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
68+
target_compile_definitions(${PROJECT_NAME} PRIVATE USE_OPENSSL)
8269
endif()
8370

84-
find_path(CARES_INCLUDE_DIR ares.h)
85-
find_library(CARES_LIBRARY NAMES cares)
86-
if(CARES_INCLUDE_DIR AND CARES_LIBRARY)
87-
target_include_directories(${PROJECT_NAME} PRIVATE ${CARES_INCLUDE_DIR})
88-
target_link_libraries(${PROJECT_NAME} PRIVATE ${CARES_LIBRARY})
71+
find_package(c-ares)
72+
if(c-ares_FOUND)
73+
message(STATUS "c-ares found!")
74+
target_link_libraries(${PROJECT_NAME} PRIVATE c-ares_lib)
8975
set(TRANTOR_SOURCES ${TRANTOR_SOURCES} trantor/net/inner/AresResolver.cc)
9076
else()
9177
set(TRANTOR_SOURCES ${TRANTOR_SOURCES} trantor/net/inner/NormalResolver.cc)
@@ -172,6 +158,7 @@ install(
172158
FILES
173159
"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TrantorConfig.cmake"
174160
"${CMAKE_CURRENT_BINARY_DIR}/TrantorConfigVersion.cmake"
161+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/Findc-ares.cmake"
175162
DESTINATION "${INSTALL_TRANTOR_CMAKE_DIR}"
176163
COMPONENT dev)
177164

cmake/templates/TrantorConfig.cmake.in

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@
88

99
@PACKAGE_INIT@
1010

11+
include(CMakeFindDependencyMacro)
12+
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
13+
if(@OpenSSL_FOUND@)
14+
find_dependency(OpenSSL)
15+
endif()
16+
if(@c-ares_FOUND@)
17+
find_dependency(c-ares)
18+
endif()
1119
# Compute paths
1220

1321
# Our library dependencies (contains definitions for IMPORTED targets)
@@ -17,4 +25,4 @@ if(NOT TARGET Trantor::Trantor)
1725
endif()
1826

1927
get_target_property(TRANTOR_INCLUDE_DIRS Trantor::Trantor INTERFACE_INCLUDE_DIRECTORIES)
20-
set(TRANTOR_LIBRARIES Trantor::Trantor)
28+
set(TRANTOR_LIBRARIES Trantor::Trantor)

cmake_modules/Findc-ares.cmake

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Try to find c-ares library Once done this will define
2+
#
3+
# c-ares_FOUND - system has c-ares
4+
# C-ARES_INCLUDE_DIRS - The c-ares include directory
5+
# C-ARES_LIBRARIES - Link these to use c-ares
6+
# c-ares_lib - Imported Targets
7+
#
8+
# Copyright (c) 2020 antao <antao2002@gmail.com>
9+
#
10+
11+
find_path(C-ARES_INCLUDE_DIRS ares.h)
12+
find_library(C-ARES_LIBRARIES NAMES cares)
13+
if(C-ARES_INCLUDE_DIRS AND C-ARES_LIBRARIES)
14+
add_library(c-ares_lib INTERFACE IMPORTED)
15+
set_target_properties(c-ares_lib
16+
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
17+
"${C-ARES_INCLUDE_DIRS}"
18+
INTERFACE_LINK_LIBRARIES
19+
"${C-ARES_LIBRARIES}")
20+
endif()
21+
22+
include(FindPackageHandleStandardArgs)
23+
find_package_handle_standard_args(c-ares
24+
DEFAULT_MSG
25+
C-ARES_INCLUDE_DIRS
26+
C-ARES_LIBRARIES)
27+
mark_as_advanced(C-ARES_INCLUDE_DIRS C-ARES_LIBRARIES)

0 commit comments

Comments
 (0)