33project (netcpp VERSION 0.3 DESCRIPTION "C++ Network library." )
44set (CMAKE_CXX_STANDARD 20)
55
6- include_directories ( include /net )
6+ include ( GNUInstallDirs )
77
8- add_library (netcpp SHARED
9- src/PCH.cpp
8+ set (INCLUDES "${CMAKE_CURRENT_SOURCE_DIR} /include" )
9+ set (EXPORT_NAMESPACE "${PROJECT_NAME} ::" )
10+ set (CMAKE_CONFIG_FILE_BASENAME "${PROJECT_NAME} Config.cmake" )
11+ set (CMAKE_EXPORT_FILE_BASENAME "${PROJECT_NAME} Export.cmake" )
12+
13+ set (HEADER_FILES ${INCLUDES} /net/netcpp.hpp)
14+ set (SOURCE_FILES
1015 src/IoSystem.cpp
1116 src/Dns.cpp
1217 src/Endpoint.cpp
@@ -15,7 +20,16 @@ add_library(netcpp SHARED
1520 src/IpAddress.cpp
1621 src/netcpp.cpp
1722 src/Socket.cpp
18- src/Native.cpp )
23+ src/Native.cpp
24+ ${HEADER_FILES} )
25+
26+ string (REPLACE "/${CMAKE_LIBRARY_ARCHITECTURE} " "" CMAKE_INSTALL_LIBDIR_ARCHIND "${CMAKE_INSTALL_LIBDIR} " )
27+
28+ add_compile_definitions (NETCPP_BUILD )
29+
30+ add_library (netcpp STATIC ${SOURCE_FILES} )
31+
32+ add_library (${EXPORT_NAMESPACE}${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
1933
2034target_include_directories (netcpp PRIVATE
2135 ${CMAKE_CURRENT_SOURCE_DIR} /src )
@@ -24,17 +38,33 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
2438
2539target_link_libraries (netcpp ws2_32 )
2640
27- target_precompile_headers (netcpp
28- PRIVATE
29- src/PCH.h )
41+ target_precompile_headers (netcpp PRIVATE ${HEADER_FILES} )
42+
43+ target_include_directories (netcpp PUBLIC
44+ $<BUILD_INTERFACE :${INCLUDES} >
45+ $<INSTALL_INTERFACE :${CMAKE_INSTALL_INCLUDEDIR} >)
46+
47+ file (GLOB_RECURSE HEADERS "${INCLUDES} /*.h" "${INCLUDES} /*.hxx" "${INCLUDES} /*.hpp" )
48+ string (REPLACE "/${CMAKE_LIBRARY_ARCHITECTURE} " "" CMAKE_INSTALL_LIBDIR_ARCHIND "${CMAKE_INSTALL_LIBDIR} " )
49+ foreach (headerFile ${HEADERS} )
50+ get_filename_component (headerFileParentDir "${headerFile} " DIRECTORY )
51+ file (RELATIVE_PATH headerFileRelParentDir "${INCLUDES} " "${headerFileParentDir} " )
52+
53+ install (FILES "${headerFile} "
54+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} /${headerFileRelParentDir} "
55+ )
56+ endforeach ()
3057
3158install (TARGETS netcpp
32- EXPORT netcpp_targets
33- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR} "
34- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR} "
35- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR} " )
36-
37- install (EXPORT netcpp_targets
38- FILE netcpp-targets .cmake
39- NAMESPACE netcpp::
40- DESTINATION share/netcpp)
59+ EXPORT netcpp
60+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} " )
61+
62+ export (TARGETS "${PROJECT_NAME} "
63+ NAMESPACE "${EXPORT_NAMESPACE} "
64+ FILE "${CMAKE_EXPORT_FILE_BASENAME} "
65+ EXPORT_LINK_INTERFACE_LIBRARIES )
66+
67+ install (EXPORT "${PROJECT_NAME} "
68+ FILE "${CMAKE_CONFIG_FILE_BASENAME} "
69+ NAMESPACE "${EXPORT_NAMESPACE} "
70+ DESTINATION "${CMAKE_INSTALL_LIBDIR_ARCHIND} /cmake/${PROJECT_NAME} " )
0 commit comments