70 lines
1.6 KiB
CMake
70 lines
1.6 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
|
|
project(hyprland-toggle-tiling
|
|
VERSION 1.4.2
|
|
LANGUAGES CXX
|
|
)
|
|
|
|
include(GNUInstallDirs)
|
|
include(FetchContent)
|
|
|
|
# --------------------------------------------------
|
|
# Dependency handling
|
|
# --------------------------------------------------
|
|
|
|
option(USE_SYSTEM_JSON
|
|
"Use system-installed nlohmann_json instead of fetching"
|
|
OFF
|
|
)
|
|
|
|
if(USE_SYSTEM_JSON)
|
|
find_package(nlohmann_json CONFIG REQUIRED)
|
|
else()
|
|
# Try system package first silently
|
|
find_package(nlohmann_json CONFIG QUIET)
|
|
|
|
if(NOT nlohmann_json_FOUND)
|
|
message(STATUS "nlohmann_json not found, fetching from GitHub")
|
|
|
|
FetchContent_Declare(
|
|
nlohmann_json
|
|
URL https://github.com/nlohmann/json/releases/download/v3.12.0/json.tar.xz
|
|
)
|
|
|
|
FetchContent_MakeAvailable(nlohmann_json)
|
|
else()
|
|
message(STATUS "Using system nlohmann_json")
|
|
endif()
|
|
endif()
|
|
|
|
# --------------------------------------------------
|
|
# Executable
|
|
# --------------------------------------------------
|
|
|
|
add_executable(htt
|
|
src/main.cpp
|
|
src/HyprlandService.cpp
|
|
src/Workspace.cpp
|
|
src/ShellService.cpp
|
|
src/FileService.cpp
|
|
src/WindowRule.cpp
|
|
src/Client.cpp
|
|
)
|
|
|
|
target_compile_features(htt PRIVATE cxx_std_17)
|
|
|
|
target_link_libraries(htt
|
|
PRIVATE
|
|
nlohmann_json::nlohmann_json
|
|
)
|
|
|
|
target_include_directories(htt PRIVATE ${PROJECT_SOURCE_DIR}/src)
|
|
|
|
# --------------------------------------------------
|
|
# Install
|
|
# --------------------------------------------------
|
|
|
|
install(TARGETS htt
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
)
|