Fix macOS build: drop Boost::system/find_package component, use std::filesystem
Homebrew's boost formula doesn't ship the boost_system CMake config file, so find_package(Boost REQUIRED COMPONENTS system) failed on macOS. - Replace boost::filesystem with std::filesystem (C++17, no Boost dep) - Drop 'filesystem' from find_package — only headers needed (asio + system) - Link libboost_system explicitly per-platform by library name, resolved via the platform's default search path (Homebrew toolchain on macOS, system libs on Linux, MSYS2 on Windows) CI will rerun automatically on PR push.
This commit is contained in:
+17
-4
@@ -258,14 +258,20 @@ if(BUILD_CLI)
|
|||||||
add_executable(triangles-cli
|
add_executable(triangles-cli
|
||||||
triangles-cli.cpp
|
triangles-cli.cpp
|
||||||
)
|
)
|
||||||
# Boost components used by the CLI
|
# Boost: only need headers for asio + system. Boost::system gets resolved at
|
||||||
find_package(Boost REQUIRED COMPONENTS filesystem system)
|
# link time via the platform's default library search path (libboost_system
|
||||||
|
# on Linux, libboost_system.dylib on macOS Homebrew, libboost_system-mt-*.dll
|
||||||
|
# on Windows MSYS2). Avoids needing a per-component CMake config file.
|
||||||
|
find_package(Boost REQUIRED)
|
||||||
target_link_libraries(triangles-cli
|
target_link_libraries(triangles-cli
|
||||||
PRIVATE
|
PRIVATE
|
||||||
json_compat
|
json_compat
|
||||||
Boost::filesystem
|
|
||||||
Boost::system
|
|
||||||
)
|
)
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
# Linux: explicit link to libboost_system (header-only Boost.System
|
||||||
|
# is rare; we explicitly link the small compiled library).
|
||||||
|
target_link_libraries(triangles-cli PRIVATE boost_system)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set_target_properties(triangles-cli PROPERTIES SUFFIX ".exe")
|
set_target_properties(triangles-cli PROPERTIES SUFFIX ".exe")
|
||||||
@@ -273,6 +279,13 @@ if(BUILD_CLI)
|
|||||||
target_link_libraries(triangles-cli PRIVATE ws2_32)
|
target_link_libraries(triangles-cli PRIVATE ws2_32)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(APPLE)
|
||||||
|
# macOS Homebrew ships libboost_system.dylib without a CMake config
|
||||||
|
# file, so link by library name (resolved via Homebrew's compiler
|
||||||
|
# toolchain search paths).
|
||||||
|
target_link_libraries(triangles-cli PRIVATE boost_system)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set_target_properties(triangles-cli PROPERTIES
|
set_target_properties(triangles-cli PROPERTIES
|
||||||
VS_WINRT_COMPONENT "console"
|
VS_WINRT_COMPONENT "console"
|
||||||
|
|||||||
@@ -41,8 +41,7 @@
|
|||||||
#include <boost/asio.hpp>
|
#include <boost/asio.hpp>
|
||||||
#include <boost/asio/streambuf.hpp>
|
#include <boost/asio/streambuf.hpp>
|
||||||
|
|
||||||
#include <boost/filesystem/operations.hpp>
|
#include <filesystem>
|
||||||
#include <boost/filesystem/path.hpp>
|
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
@@ -62,7 +61,7 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
namespace asio = boost::asio;
|
namespace asio = boost::asio;
|
||||||
using boost::asio::ip::tcp;
|
using boost::asio::ip::tcp;
|
||||||
namespace fs = boost::filesystem;
|
namespace fs = std::filesystem;
|
||||||
using namespace json_spirit;
|
using namespace json_spirit;
|
||||||
|
|
||||||
// ─────────────────────────────────────────────────────────────────────────────
|
// ─────────────────────────────────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user