diff options
| -rw-r--r-- | CMakeLists.txt | 95 | ||||
| -rw-r--r-- | src/main.cpp | 8 |
2 files changed, 103 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..6a1e883 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,95 @@ + +cmake_minimum_required(VERSION 3.21) + +cmake_policy(SET CMP0135 NEW) + +project(pke VERSION 0.0) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED True) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -pthread") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g") +set(CMAKE_CXX_FLAGS_RELEASE "-O3 -s DNDEBUG") + +set(PKE_SOURCE_FILES + src/main.cpp +) + +include(FetchContent) +FetchContent_Declare( + imguidocked + URL https://github.com/ocornut/imgui/archive/a88e5be7f478233e74c72c72eabb1d5f1cb69bb5.zip +) + +FetchContent_GetProperties(imguidocked) +if(NOT imguidocked_POPULATED) + FetchContent_Populate(imguidocked) +endif() + +set(ImGuiDockedFiles + ${imguidocked_SOURCE_DIR}/imconfig.h + ${imguidocked_SOURCE_DIR}/imgui.cpp + ${imguidocked_SOURCE_DIR}/imgui.h + ${imguidocked_SOURCE_DIR}/imgui_demo.cpp + ${imguidocked_SOURCE_DIR}/imgui_draw.cpp + ${imguidocked_SOURCE_DIR}/imgui_internal.h + ${imguidocked_SOURCE_DIR}/imgui_tables.cpp + ${imguidocked_SOURCE_DIR}/imgui_widgets.cpp + ${imguidocked_SOURCE_DIR}/imstb_rectpack.h + ${imguidocked_SOURCE_DIR}/imstb_textedit.h + ${imguidocked_SOURCE_DIR}/imstb_truetype.h + ${imguidocked_SOURCE_DIR}/backends/imgui_impl_glfw.cpp + ${imguidocked_SOURCE_DIR}/backends/imgui_impl_glfw.h + ${imguidocked_SOURCE_DIR}/backends/imgui_impl_vulkan.cpp + ${imguidocked_SOURCE_DIR}/backends/imgui_impl_vulkan.h + ${imguidocked_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp + ${imguidocked_SOURCE_DIR}/misc/cpp/imgui_stdlib.h +) +add_library(imguidocked ${ImGuiDockedFiles}) +target_include_directories(imguidocked PUBLIC ${imguidocked_SOURCE_DIR}) + +find_package(Vulkan REQUIRED) +if (Vulkan_FOUND) + message(STATUS "Vulkan found: " ${Vulkan_INCLUDE_DIR}) +endif (Vulkan_FOUND) + +add_executable(pke + ${PKE_SOURCE_FILES} +) + +if (Vulkan_FOUND) + target_link_libraries(pke PUBLIC ${Vulkan_LIBRARIES}) + target_include_directories(pke PUBLIC ${Vulkan_INCLUDE_DIR}) +endif (Vulkan_FOUND) + +set(SHADER_OUTPUT_DIR ${PROJECT_BINARY_DIR}/shaders) +set(SHADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/graphics/shaders) +file(MAKE_DIRECTORY ${SHADER_OUTPUT_DIR}) +set(SHADERS +) + +foreach(SHADER IN LISTS SHADERS) + get_filename_component(FILENAME ${SHADER} NAME) + message(STATUS "Before Shader Compile: ${FILENAME}") + add_custom_command(OUTPUT ${SHADER_OUTPUT_DIR}/${FILENAME}.spv + COMMAND ${Vulkan_GLSLC_EXECUTABLE} ${SHADER} -o ${SHADER_OUTPUT_DIR}/${FILENAME}.spv + DEPENDS ${SHADER} + COMMENT "Compiling ${FILENAME}") + list(APPEND SPV_SHADERS ${SHADER_OUTPUT_DIR}/${FILENAME}.spv) +endforeach() + +add_custom_target(shaders ALL DEPENDS ${SPV_SHADERS}) + +find_package(PkgConfig REQUIRED) +pkg_search_module(GLFW REQUIRED glfw3) +if (GLFW_FOUND) + message(STATUS "GLFW found: " ${GLFW_INCLUDE_DIR}) + target_link_libraries(pke PUBLIC ${GLFW_LIBRARIES}) + target_include_directories(pke PUBLIC ${GLFW_INCLUDE_DIR}) +endif (GLFW_FOUND) + +target_include_directories(pke PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src") + +target_link_libraries(pke PUBLIC imguidocked) + +add_dependencies(pke shaders) diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..b18b7c6 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,8 @@ + +#include <cstdio> + +int main() { + printf("PKE ENTERING\n"); + printf("PKE EXITING\n"); + return 0; +} |
