Modernize Boost module finding in CMake
authorThomas Jarosch <thomas.jarosch@intra2net.com>
Sat, 27 Dec 2025 14:50:28 +0000 (15:50 +0100)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Sat, 27 Dec 2025 14:52:19 +0000 (15:52 +0100)
- Remove deprecated Boost_USE_* variables
- Remove duplicate find_package calls from test CMakeLists files
- Add missing iostreams component to find_package
- Use conditional CMP0167 policy for CMake 3.30+ compatibility
  while maintaining backward compatibility with CMake 3.28+

This eliminates the FindBoost deprecation warning on CMake 3.30+.

CMakeLists.txt
src/CMakeLists.txt
test/CMakeLists.test_dns.txt
test/CMakeLists.test_icmppacket.txt
test/CMakeLists.txt

index 24d4d58..4258eff 100644 (file)
@@ -1,5 +1,12 @@
 cmake_minimum_required(VERSION 3.28 FATAL_ERROR)
 
+# Modern Boost integration (CMake 3.30+)
+# Use CMake's built-in Boost support instead of deprecated FindBoost module
+# For CMake < 3.30, keep old behavior to avoid errors
+if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.30)
+    cmake_policy(SET CMP0167 NEW)
+endif()
+
 # project: definitions
 project(pingcheck)
 set(VERSION 0.8)
index 1ba31c9..32a4789 100644 (file)
@@ -1,12 +1,8 @@
 # package: find external packages
 include(FindPkgConfig)
 
-# package: required boost libraries
-set(Boost_USE_STATIC_LIBS OFF)
-set(Boost_USE_MULTITHREADED OFF)
-set(Boost_USE_STATIC_RUNTIME OFF)
-
-find_package(Boost 1.44 COMPONENTS filesystem program_options system serialization date_time REQUIRED)
+# package: required boost libraries (CMake 3.30+ modern approach)
+find_package(Boost 1.44 REQUIRED COMPONENTS filesystem program_options system serialization date_time iostreams)
 
 # package: boost-custom
 include_directories(${CMAKE_SOURCE_DIR}/lib/boost-custom)
index 93b3da1..7ea036b 100644 (file)
@@ -16,13 +16,6 @@ add_executable(test_dns
     test_dns.cpp
 )
 
-set(Boost_USE_STATIC_LIBS OFF)
-set(Boost_USE_MULTITHREADED OFF)
-set(Boost_USE_STATIC_RUNTIME OFF)
-find_package(Boost 1.44 COMPONENTS serialization date_time REQUIRED)
-include_directories(${Boost_INCLUDE_DIRS})
-link_directories(${Boost_LIBRARY_DIRS})
-
 # package: boost-net-dns
 include_directories(${CMAKE_SOURCE_DIR}/lib/boost-net-dns)
 
index 921d7f2..b093012 100644 (file)
@@ -21,13 +21,6 @@ add_executable(test_icmppacket
     test_icmppacket.cpp
 )
 
-set(Boost_USE_STATIC_LIBS OFF)
-set(Boost_USE_MULTITHREADED OFF)
-set(Boost_USE_STATIC_RUNTIME OFF)
-find_package(Boost 1.44 COMPONENTS serialization date_time REQUIRED)
-include_directories(${Boost_INCLUDE_DIRS})
-link_directories(${Boost_LIBRARY_DIRS})
-
 # linker: link the program against the libraries
 target_link_libraries(
     test_icmppacket
index 8162a05..03bb845 100644 (file)
@@ -1,13 +1,8 @@
 # package: find external packages
 include(FindPkgConfig)
 
-# package: required boost libraries
-set(Boost_USE_STATIC_LIBS OFF)
-set(Boost_USE_MULTITHREADED ON)
-set(Boost_USE_STATIC_RUNTIME OFF)
-find_package(Boost 1.44 COMPONENTS unit_test_framework system program_options date_time serialization REQUIRED)
-include_directories(${Boost_INCLUDE_DIRS})
-link_directories(${Boost_LIBRARY_DIRS})
+# package: required boost libraries (CMake 3.30+ modern approach)
+find_package(Boost 1.44 REQUIRED COMPONENTS unit_test_framework system program_options date_time serialization iostreams)
 
 # package: libi2ncommon
 pkg_check_modules(I2NCOMMON REQUIRED libi2ncommon)