Changes
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4f158a4..d5b5028 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,8 +39,7 @@ set(LIBMW_BUILD_CRYPTO OFF)
FetchContent_MakeAvailable(libmw spdlog json cxxopts)
-set(SOURCE_FILES
- src/main.cpp
+set(LIB_SOURCE_FILES
src/agent.cpp
src/llm_client.cpp
src/memory.cpp
@@ -54,21 +53,26 @@ set(LIBS
mw::sqlite
spdlog::spdlog
nlohmann_json::nlohmann_json
- cxxopts::cxxopts
)
set(INCLUDES
${libmw_SOURCE_DIR}/includes
${json_SOURCE_DIR}/single_include
- ${cxxopts_SOURCE_DIR}/include
)
-add_executable(agent_smith ${SOURCE_FILES})
-
-set_property(TARGET agent_smith PROPERTY COMPILE_WARNING_AS_ERROR FALSE)
+# 1. Build the Agent Smith Library
+add_library(agent_smith ${LIB_SOURCE_FILES})
+set_property(TARGET agent_smith PROPERTY CXX_STANDARD 23)
target_compile_options(agent_smith PRIVATE -Wall -Wextra)
-target_include_directories(agent_smith PRIVATE ${INCLUDES} src)
-target_link_libraries(agent_smith PRIVATE ${LIBS})
+target_include_directories(agent_smith PUBLIC ${INCLUDES} src)
+target_link_libraries(agent_smith PUBLIC ${LIBS})
+
+# 2. Build the Example CLI Executable
+add_executable(agent_smith_cli src/main.cpp)
+set_property(TARGET agent_smith_cli PROPERTY CXX_STANDARD 23)
+target_compile_options(agent_smith_cli PRIVATE -Wall -Wextra)
+target_include_directories(agent_smith_cli PRIVATE ${cxxopts_SOURCE_DIR}/include)
+target_link_libraries(agent_smith_cli PRIVATE agent_smith cxxopts::cxxopts)
option(AGENT_SMITH_BUILD_TESTS "Build unit tests" ON)
@@ -88,26 +92,17 @@ if(AGENT_SMITH_BUILD_TESTS)
src/message_test.cpp
)
- add_executable(agent_smith_test
- ${TEST_FILES}
- src/agent.cpp
- src/memory.cpp
- src/tool.cpp
- src/llm_client.cpp
- src/message.cpp
- )
+ add_executable(agent_smith_test ${TEST_FILES})
set_property(TARGET agent_smith_test PROPERTY CXX_STANDARD 23)
target_compile_options(agent_smith_test PRIVATE -Wall -Wextra)
target_include_directories(agent_smith_test PRIVATE
- ${INCLUDES}
- src
${googletest_SOURCE_DIR}/googletest/include
${googletest_SOURCE_DIR}/googlemock/include
)
target_link_libraries(agent_smith_test PRIVATE
- ${LIBS}
+ agent_smith
GTest::gtest_main
GTest::gmock_main
)