cmake_minimum_required(VERSION 3.16) project(drharness LANGUAGES CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) find_package(CURL REQUIRED) find_package(nlohmann_json REQUIRED) set(TOOL_SOURCES tools/shell_tool.cpp tools/agent_tool.cpp tools/edit_tool.cpp tools/read_multi_modal.cpp tools/file_list_tool.cpp tools/file_read_tool.cpp tools/grep_tool.cpp ) if(CMAKE_SYSTEM_NAME STREQUAL "Windows") list(REMOVE_ITEM TOOL_SOURCES tools/shell_tool.cpp) set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++") set(CMAKE_SHARED_LINKER_FLAGS "-static-libgcc -static-libstdc++") endif() add_library(drharness_lib src/encoding.cpp src/tool_registry.cpp src/ollama_client.cpp src/harness.cpp src/debug_client.cpp src/editor.cpp src/skill.cpp src/rebase_engine.cpp src/utility.cpp src/base64_util.cpp ${TOOL_SOURCES} ) target_include_directories(drharness_lib PUBLIC include tools) target_link_libraries(drharness_lib PUBLIC nlohmann_json::nlohmann_json PRIVATE CURL::libcurl ) target_compile_options(drharness_lib PRIVATE -Wall -Wextra -Wpedantic) add_executable(drharness src/main.cpp) target_link_libraries(drharness PRIVATE drharness_lib) install(TARGETS drharness DESTINATION bin) # Add testing support enable_testing() add_subdirectory(tests)