@@ -16,6 +16,8 @@ set(CPPKAFKA_VERSION "${CPPKAFKA_VERSION_MAJOR}.${CPPKAFKA_VERSION_MINOR}.${CPPK
1616set (RDKAFKA_MIN_VERSION "0.9.4" )
1717set (RDKAFKA_MIN_VERSION_HEX 0x00090400)
1818
19+ option (USE_CPP17 "Use C++17 features instead of Boost (still, if you don't have boost you can't build examples" OFF )
20+
1921if (NOT CMAKE_CXX_FLAGS )
2022 # Set default compile flags for the project
2123 if (MSVC )
@@ -31,8 +33,13 @@ if (NOT CMAKE_CXX_FLAGS)
3133 set (CMAKE_CXX_FLAGS "-Wall" )
3234 endif ()
3335endif ()
34- # Use C++17
35- set (CMAKE_CXX_STANDARD 17)
36+
37+ if (USE_CPP17)
38+ set (CMAKE_CXX_STANDARD 17)
39+ add_definitions ("-D_USE_CPP17" )
40+ else ()
41+ set (CMAKE_CXX_STANDARD 11)
42+ endif ()
3643
3744# Set output directories
3845set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /lib)
@@ -104,32 +111,11 @@ if (NOT CPPKAFKA_PKGCONFIG_DIR)
104111 set (CPPKAFKA_PKGCONFIG_DIR share/pkgconfig)
105112endif ()
106113
107- # Try to find the RdKafka configuration file if present.
108- # This will search default system locations as well as RdKafka_ROOT and RdKafka_Dir paths if specified.
109- find_package (RdKafka ${FIND_PACKAGE_QUIET} CONFIG)
110- set (RDKAFKA_TARGET_IMPORTS ${RdKafka_FOUND} )
111- if (NOT RdKafka_FOUND)
112- message (STATUS "RdKafkaConfig.cmake not found. Attempting to find module instead..." )
113- find_package (RdKafka REQUIRED ${FIND_PACKAGE_QUIET} MODULE)
114- if (NOT RdKafka_FOUND)
115- message (FATAL_ERROR "RdKafka module not found. Please set RDKAFKA_ROOT to the install path or RDKAFKA_DIR pointing to the RdKafka configuration file location." )
116- else ()
117- message (STATUS "RdKafka module found." )
118- endif ()
119- else ()
120- message (STATUS "RdKafka configuration file found: ${RdKafka_CONFIG} " )
121- endif ()
122-
123- add_subdirectory (src)
124- add_subdirectory (include /cppkafka)
125-
126- # Examples target
127- if (NOT CPPKAFKA_DISABLE_EXAMPLES)
114+ if (NOT USE_CPP17 OR NOT CPPKAFKA_DISABLE_EXAMPLES OR NOT CPPKAFKA_DISABLE_TESTS)
128115 # Look for Boost (just need boost.optional headers here)
129- find_package (Boost ${FIND_PACKAGE_QUIET} CONFIG)
116+ find_package (Boost REQUIRED ${FIND_PACKAGE_QUIET} )
117+
130118 if (Boost_FOUND)
131- option (CPPKAFKA_BOOST_STATIC_LIBS "Link with Boost static libraries." ON )
132- option (CPPKAFKA_BOOST_USE_MULTITHREADED "Use Boost multithreaded libraries." ON )
133119 find_package (Boost COMPONENTS program_options ${FIND_PACKAGE_QUIET} )
134120 set (Boost_USE_STATIC_LIBS ${CPPKAFKA_BOOST_STATIC_LIBS} )
135121 set (Boost_USE_MULTITHREADED ${CPPKAFKA_BOOST_USE_MULTITHREADED} )
@@ -142,12 +128,37 @@ if (NOT CPPKAFKA_DISABLE_EXAMPLES)
142128 message (STATUS "Boost is multi-threaded: ${CPPKAFKA_BOOST_USE_MULTITHREADED} " )
143129 message (STATUS "Boost libraries: ${Boost_LIBRARIES} " )
144130 endif ()
131+ endif ()
132+
133+ # Examples target
134+ if (Boost_PROGRAM_OPTIONS_FOUND)
145135 add_subdirectory (examples)
146136 else ()
147137 message (STATUS "Disabling examples" )
148138 endif ()
149139endif ()
150140
141+ # Try to find the RdKafka configuration file if present.
142+ # This will search default system locations as well as RdKafka_ROOT and RdKafka_Dir paths if specified.
143+ find_package (RdKafka ${FIND_PACKAGE_QUIET} CONFIG)
144+ set (RDKAFKA_TARGET_IMPORTS ${RdKafka_FOUND} )
145+ if (NOT RdKafka_FOUND)
146+ message (STATUS "RdKafkaConfig.cmake not found. Attempting to find module instead..." )
147+ find_package (RdKafka REQUIRED ${FIND_PACKAGE_QUIET} MODULE)
148+ if (NOT RdKafka_FOUND)
149+ message (FATAL_ERROR "RdKafka module not found. Please set RDKAFKA_ROOT to the install path or RDKAFKA_DIR pointing to the RdKafka configuration file location." )
150+ else ()
151+ message (STATUS "RdKafka module found." )
152+ endif ()
153+ else ()
154+ message (STATUS "RdKafka configuration file found: ${RdKafka_CONFIG} " )
155+ endif ()
156+
157+ add_subdirectory (src)
158+ add_subdirectory (include /cppkafka)
159+
160+
161+
151162# Add a target to generate API documentation using Doxygen
152163find_package (Doxygen ${FIND_PACKAGE_QUIET} )
153164if (DOXYGEN_FOUND)
@@ -188,4 +199,4 @@ if(NOT TARGET uninstall)
188199 # Add uninstall target
189200 add_custom_target (uninstall
190201 COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR} /cmake_uninstall.cmake)
191- endif ()
202+ endif ()
0 commit comments