diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d3f984d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,44 @@ + +cmake_minimum_required(VERSION 3.10) +project(webserv) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# Add source files +file(GLOB_RECURSE SOURCES + "${PROJECT_SOURCE_DIR}/webserv/*.cpp" +) + +# Add include directories +include_directories( + ${PROJECT_SOURCE_DIR} +) + + +# Build type options +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") + +# Set build flags for different build types +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + message(STATUS "Debug build: adding debug flags") + add_compile_options(-g -O0) + add_definitions(-DDEBUG) +elseif(CMAKE_BUILD_TYPE STREQUAL "Release") + message(STATUS "Release build: adding optimization flags") + add_compile_options(-O3) + add_definitions(-DNDEBUG) +elseif(CMAKE_BUILD_TYPE STREQUAL "ASAN") + message(STATUS "AddressSanitizer build: adding sanitizer flags") + add_compile_options(-g -O1 -fsanitize=address -fno-omit-frame-pointer) + add_link_options(-fsanitize=address) + add_definitions(-DASAN) +endif() + +# Add executable target +add_executable(webserv ${SOURCES}) + diff --git a/webserv/main.cpp b/webserv/main.cpp index 51a0033..97fe900 100644 --- a/webserv/main.cpp +++ b/webserv/main.cpp @@ -2,7 +2,6 @@ int main() { - MyModule module; - module.doSomething(); + MyModule::doSomething(); return 0; } \ No newline at end of file diff --git a/webserv/mymodule/MyModule.cpp b/webserv/mymodule/MyModule.cpp index 6957a97..d55afeb 100644 --- a/webserv/mymodule/MyModule.cpp +++ b/webserv/mymodule/MyModule.cpp @@ -4,5 +4,5 @@ void MyModule::doSomething() { - std::cout << "Doing really something!" << std::endl; + std::cout << "Doing really something!\n"; } \ No newline at end of file diff --git a/webserv/mymodule/MyModule.hpp b/webserv/mymodule/MyModule.hpp index c5de43c..34baab8 100644 --- a/webserv/mymodule/MyModule.hpp +++ b/webserv/mymodule/MyModule.hpp @@ -3,5 +3,5 @@ class MyModule { public: - void doSomething(); + static void doSomething(); }; \ No newline at end of file