diff --git a/App/CMakeLists.txt b/App/CMakeLists.txt index af3f7e2a1ca26c20a83e22ece6224d9f231c8260..d83db83acc75f04511e169a303c4c60d076a1b45 100644 --- a/App/CMakeLists.txt +++ b/App/CMakeLists.txt @@ -1,23 +1,28 @@ add_executable( QPongGame + QPongApp.cpp GameLayer.cpp Log.cpp Player.cpp MainMenuLayer.cpp - QPongApp.cpp Window.cpp ) -target_include_directories( QPong PUBLIC - . - .. - ../libs - ../libs/imgui/examples/libs/gl3w -) +target_compile_options( QPongGame + PRIVATE + ${basic_flags} + ) -target_link_libraries( QPongGame PUBLIC - GuiCore - QPong -) +target_link_libraries( QPongGame + PRIVATE + GuiCore + QPong + ImGuiSrc + ) + +target_include_directories( QPongGame + PRIVATE + .. + ) add_custom_command(TARGET QPongGame POST_BUILD diff --git a/CMakeLists.txt b/CMakeLists.txt index 1112d31a038de22782cbf28942d7de72405b18fc..90cce88c76b6426275311d5cd28ce11b3f2278a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,10 @@ project(QPong VERSION 0.0.1 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_BUILD_TYPE Release) -set(CMAKE_CXX_FLAGS "-Ofast") + +list(APPEND basic_flags "-O3" "-Wextra" "-Wall" "-Wshadow" "-Wold-style-cast") +list(APPEND basic_flags "-Wno-unused-variable") +list(APPEND pedantic_flags "-pedantic" "-Wpedantic") option(LOG_DEBUG_INFO "Enable logging t console" OFF) if(LOG_DEBUG_INFO) @@ -13,6 +16,12 @@ endif(LOG_DEBUG_INFO) # Check for PkgConfig find_package(PkgConfig REQUIRED) +# Libraries the project depends on: +add_subdirectory(libs/spdlog) + +# ImGuiSrc +add_subdirectory(ImGuiSrc) + # GUI/Window add_subdirectory(GuiCore) @@ -22,5 +31,3 @@ add_subdirectory(QPong) # QPong App sources add_subdirectory(App) -# Libraries the project depends on: -add_subdirectory(libs/spdlog) diff --git a/GuiCore/CMakeLists.txt b/GuiCore/CMakeLists.txt index 38492720572ddb2a19b8c15a664c54716efa18dc..83036fb3f4ee6d7aa07b67448ee98e19d81a21bd 100644 --- a/GuiCore/CMakeLists.txt +++ b/GuiCore/CMakeLists.txt @@ -1,5 +1,30 @@ find_package( Freetype REQUIRED) +add_library( ImGuiQPong + Shader.cpp + Glyphs.cpp + ImGuiLayer.cpp +) + +target_compile_options( ImGuiQPong + PRIVATE + ${basic_flags} + ) + +target_include_directories( ImGuiQPong + SYSTEM PRIVATE + ../libs + ../libs/imgui/examples/libs/gl3w + ../libs/spdlog/include/ + ${FREETYPE_INCLUDE_DIRS} + ) + +target_link_libraries( ImGuiQPong + PRIVATE + ImGuiSrc + ${FREETYPE_LIBRARIES} +) + # GuiCore library add_library(GuiCore Application.cpp @@ -9,49 +34,26 @@ add_library(GuiCore Log.cpp Timer.cpp Timestep.cpp - Glyphs.cpp ) -target_include_directories( GuiCore PUBLIC - ../libs/spdlog/include/ - ${FREETYPE_INCLUDE_DIRS} -) +target_compile_options(GuiCore + PRIVATE + ${basic_flags} + ) + +target_include_directories( GuiCore + SYSTEM PRIVATE + ../libs/spdlog/include/ + ) target_link_libraries( GuiCore + ImGuiQPong spdlog - ${FREETYPE_LIBRARIES} -) -add_compile_definitions(IMGUI_IMPL_OPENGL_LOADER_GL3W) - -# ImGui is a dependency of GuiCore -add_library( ImGui - Shader.cpp - ImGuiLayer.cpp - ../libs/imgui/imgui.cpp - ../libs/imgui/imgui_draw.cpp - ../libs/imgui/imgui_widgets.cpp - ../libs/imgui/imgui_tables.cpp - ../libs/imgui/backends/imgui_impl_glfw.cpp - ../libs/imgui/backends/imgui_impl_opengl3.cpp - ../libs/imgui/examples/libs/gl3w/GL/gl3w.c -) - -target_include_directories( ImGui PUBLIC - ../libs - ../libs/imgui # for glfw - ../libs/imgui/backends - ../libs/imgui/examples/libs/gl3w - ../libs/spdlog/include -) - - -target_link_libraries( GuiCore - ImGui ) # Check for GLFW3 and link pkg_check_modules(GLFW glfw3) -target_include_directories(GuiCore PUBLIC ${GLFW_INCLUDE_DIRS}) +target_include_directories(GuiCore PRIVATE ${GLFW_INCLUDE_DIRS}) target_link_libraries(GuiCore ${GLFW_LIBRARIES}) diff --git a/ImGuiSrc/CMakeLists.txt b/ImGuiSrc/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..4eb0733f7da1c4c88ed5650d6a99aa758482dac6 --- /dev/null +++ b/ImGuiSrc/CMakeLists.txt @@ -0,0 +1,18 @@ +add_compile_definitions(IMGUI_IMPL_OPENGL_LOADER_GL3W) + +add_library( ImGuiSrc + ../libs/imgui/imgui.cpp + ../libs/imgui/imgui_draw.cpp + ../libs/imgui/imgui_widgets.cpp + ../libs/imgui/imgui_tables.cpp + ../libs/imgui/backends/imgui_impl_glfw.cpp + ../libs/imgui/backends/imgui_impl_opengl3.cpp + ../libs/imgui/examples/libs/gl3w/GL/gl3w.c +) + +target_include_directories( ImGuiSrc + SYSTEM PUBLIC + ../libs/imgui # for glfw + ../libs/imgui/backends + ../libs/imgui/examples/libs/gl3w + ) diff --git a/QPong/CMakeLists.txt b/QPong/CMakeLists.txt index eb417d3768a8c3e2b542fc28dbf8b55155cc42e3..42f71f946245e575797fc3655ccdaaa1d6bbcf6a 100644 --- a/QPong/CMakeLists.txt +++ b/QPong/CMakeLists.txt @@ -5,12 +5,28 @@ add_library(QPong Utils.cpp ) -target_include_directories(QPong PUBLIC - .. -) +target_compile_options(QPong + PRIVATE + ${basic_flags} + ) + +target_include_directories(QPong + PRIVATE + . + .. + ) + +target_link_libraries(QPong + PRIVATE + GuiCore + fftw3 + fftw3_omp + ) -target_link_libraries( QPong PRIVATE - GuiCore - fftw3 - fftw3_omp -) \ No newline at end of file +# target_include_directories( QPong +# PUBLIC +# . +# .. +# ../libs +# ../libs/imgui/examples/libs/gl3w +# ) \ No newline at end of file