5
5
LANGUAGES CXX
6
6
)
7
7
8
+ option (BUILD_TESTS "Build the tests" ON )
9
+
8
10
# Generate the project files
9
11
# execute_process(
10
12
# COMMAND scons
@@ -30,8 +32,12 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "$<1:${PROJECT_SOURCE_DIR}/demo/server/addons
30
32
set (CMAKE_SHARED_LIBRARY_PREFIX "lib" )
31
33
32
34
# Glob all sources files.
33
- file (GLOB_RECURSE SOURCES "src/*.cpp" )
34
- file (GLOB_RECURSE HEADERS "src/*.hpp" "src/*.h" )
35
+ file (GLOB_RECURSE GODOT_SOURCES "src/godotkafka/*.cpp" )
36
+ file (GLOB_RECURSE GODOT_HEADERS "src/godotkafka/*.hpp" "src/godotkafka/*.h" )
37
+ file (GLOB_RECURSE TEST_SOURCES "src/test/*.cpp" )
38
+ file (GLOB_RECURSE TEST_HEADERS "src/test/*.hpp" "src/test/*.h" )
39
+ file (GLOB_RECURSE LIB_SOURCES "src/kafkalib/*.cpp" )
40
+ file (GLOB_RECURSE LIB_HEADERS "src/kafkalib/*.hpp" "src/kafkalib/*.h" "include/kafkalib/*.hpp" "include/kafkalib/*.h" )
35
41
36
42
# Include OpenSSL
37
43
set (OPENSSL_USE_STATIC_LIBS TRUE )
@@ -59,21 +65,41 @@ if (SSL_LIB)
59
65
link_libraries (${SSL_LIB} )
60
66
endif ()
61
67
68
+ add_library (KafkaLib STATIC
69
+ ${LIB_SOURCES}
70
+ ${LIB_HEADERS}
71
+ )
72
+ target_include_directories (KafkaLib PUBLIC include /kafkalib)
73
+
62
74
add_library (GodotKafka SHARED
63
- ${SOURCES }
64
- ${HEADERS }
75
+ ${GODOT_SOURCES }
76
+ ${GODOT_HEADERS }
65
77
)
66
78
67
79
# Include Godot::cpp
68
80
add_subdirectory (godot-cpp)
69
81
target_link_libraries (GodotKafka PRIVATE godot::cpp)
82
+ target_link_libraries (GodotKafka PRIVATE KafkaLib)
70
83
set_target_properties (godot-cpp PROPERTIES FOLDER "External/Godot" )
71
84
72
85
# Include librdkafka
73
86
set (RDKAFKA_BUILD_EXAMPLES OFF )
74
87
set (RDKAFKA_BUILD_TESTS OFF )
88
+ set (RDKAFKA_BUILD_STATIC ON )
75
89
add_subdirectory (extern/librdkafka)
76
- target_link_libraries (GodotKafka PRIVATE rdkafka) # rdkafka is the C library and the core.
77
- target_link_libraries (GodotKafka PRIVATE rdkafka++) # rdkafka++ is a C++ wrapper around librdkafka
90
+ target_link_libraries (KafkaLib PUBLIC rdkafka) # rdkafka is the C library and the core.
91
+ target_link_libraries (KafkaLib PUBLIC rdkafka++) # rdkafka++ is a C++ wrapper around librdkafka
78
92
set_target_properties (rdkafka PROPERTIES FOLDER "External/rdkafka" )
79
93
set_target_properties (rdkafka++ PROPERTIES FOLDER "External/rdkafka" )
94
+
95
+ if (BUILD_TESTS)
96
+ add_executable (TestKafkaLib
97
+ ${TEST_SOURCES}
98
+ ${TEST_HEADERS}
99
+ )
100
+
101
+ target_link_libraries (TestKafkaLib PRIVATE KafkaLib)
102
+
103
+ # Force Visual Studio to set this target as the startup project
104
+ set_property (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT TestKafkaLib)
105
+ endif ()
0 commit comments