Skip to content

Commit 7902869

Browse files
authored
Merge pull request #13 from index1207/develop
Change CMake script
2 parents 307f9e1 + e64e1f6 commit 7902869

20 files changed

+99
-136
lines changed

CMakeLists.txt

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,15 @@
33
project(netcpp VERSION 0.3 DESCRIPTION "C++ Network library.")
44
set(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

2034
target_include_directories(netcpp PRIVATE
2135
${CMAKE_CURRENT_SOURCE_DIR}/src)
@@ -24,17 +38,33 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
2438

2539
target_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

3158
install(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}")

include/net/Context.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <memory>
44
#include <atomic>
55
#include <functional>
6+
67
#include "Socket.hpp"
78

89
namespace net

include/net/Endpoint.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#pragma once
22

33
#include <string>
4+
45
#include "IpAddress.hpp"
56

67
namespace net

include/net/IoSystem.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
#pragma once
22

3-
#include <WinSock2.h>
4-
53
#include <vector>
64
#include <thread>
75
#include <mutex>

include/net/IpAddress.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#pragma once
22

3-
#include <WinSock2.h>
43
#include <string>
54

65
namespace net

include/net/Native.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
#pragma once
22

3-
#include <WinSock2.h>
4-
#include <MSWSock.h>
5-
63
namespace net
74
{
85
class Native

include/net/Socket.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@
22

33
#include <span>
44
#include <memory>
5+
#include <optional>
56

67
#include "IpAddress.hpp"
78
#include "Endpoint.hpp"
89

9-
#include <mutex>
10-
#include <optional>
11-
1210
namespace net
1311
{
1412
enum class AddressFamily

include/net/netcpp.hpp

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
#pragma once
22

3-
// Socket Utility
4-
#include "Native.hpp"
5-
#include "IpAddress.hpp"
6-
#include "Endpoint.hpp"
7-
8-
// IO
9-
#include "IoSystem.hpp"
10-
#include "Socket.hpp"
11-
#include "Context.hpp"
12-
13-
// Network Utility
14-
#include "Dns.hpp"
15-
16-
#include <stdexcept>
3+
// Standard
4+
#include <stdexcept>
5+
#include <string>
6+
#include <format>
7+
8+
// WinSock2
9+
#include <WinSock2.h>
10+
#include <WS2tcpip.h>
11+
#include <MSWSock.h>

src/Context.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
#include "PCH.h"
2-
#include "Context.hpp"
1+
#include "net/Context.hpp"
32

43
using namespace net;
54

src/Dns.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
#include "PCH.h"
2-
#include "Dns.hpp"
3-
#include "IpAddress.hpp"
1+
#include "net/Dns.hpp"
2+
#include "net/IpAddress.hpp"
43

54
using namespace net;
65

0 commit comments

Comments
 (0)