From 8dc05e71593e014a5112384ca05aceef5fc8009a Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Tue, 18 May 2021 13:24:08 +0200 Subject: [PATCH] [#18] Fixed execution paths, GCC on Windows support and example module Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- CMakeLists.txt | 4 ++++ config/Libraries.cmake | 4 ++-- modules/CMakeLists.txt | 3 +++ modules/testing/CMakeLists.txt | 20 +++++++++++++++++++ modules/testing/include/vkcv/testing/Test.hpp | 12 +++++++++++ modules/testing/src/vkcv/testing/Test.cpp | 10 ++++++++++ projects/first_triangle/.gitignore | 1 + projects/first_triangle/CMakeLists.txt | 14 +++++++++---- 8 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 modules/CMakeLists.txt create mode 100644 modules/testing/CMakeLists.txt create mode 100644 modules/testing/include/vkcv/testing/Test.hpp create mode 100644 modules/testing/src/vkcv/testing/Test.cpp create mode 100644 projects/first_triangle/.gitignore diff --git a/CMakeLists.txt b/CMakeLists.txt index 58669d66..b18bdd33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ if (CMAKE_BUILD_TYPE) endif() message("-- Language: [ C++ " ${CMAKE_CXX_STANDARD} " ]") +message("-- Compiler: [ " ${CMAKE_CXX_COMPILER_ID} " " ${CMAKE_CXX_COMPILER_VERSION} " ]") # setting up different paths set(vkcv_config ${PROJECT_SOURCE_DIR}/config) @@ -36,6 +37,9 @@ if (vkcv_build_debug) endif() endif() +# add modules as targets +add_subdirectory(modules) + # add source files for compilation include(${vkcv_config}/Sources.cmake) diff --git a/config/Libraries.cmake b/config/Libraries.cmake index ef199df6..16b1db39 100644 --- a/config/Libraries.cmake +++ b/config/Libraries.cmake @@ -2,8 +2,8 @@ set(vkcv_config_lib ${vkcv_config}/lib) set(vkcv_lib_path ${PROJECT_SOURCE_DIR}/${vkcv_lib}) -if(NOT WIN32) - set(vkcv_libraries stdc++fs) +if(NOT MSVC) + set(vkcv_libraries stdc++fs) # optimization for loading times list(APPEND vkcv_flags -pthread) diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt new file mode 100644 index 00000000..3309d860 --- /dev/null +++ b/modules/CMakeLists.txt @@ -0,0 +1,3 @@ + +# Add new modules here: +add_subdirectory(testing) diff --git a/modules/testing/CMakeLists.txt b/modules/testing/CMakeLists.txt new file mode 100644 index 00000000..e869c797 --- /dev/null +++ b/modules/testing/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.16) +project(vkcv_testing) + +# setting c++ standard for the project +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(vkcv_testing_source ${PROJECT_SOURCE_DIR}/src) +set(vkcv_testing_include ${PROJECT_SOURCE_DIR}/include) + +set(vkcv_testing_sources + ${vkcv_testing_include}/vkcv/testing/Test.hpp + ${vkcv_testing_source}/vkcv/testing/Test.cpp +) + +# adding source files to the project +add_library(vkcv_testing STATIC ${vkcv_testing_sources}) + +# add the own include directory for public headers +target_include_directories(vkcv_testing BEFORE PUBLIC ${vkcv_testing_include}) diff --git a/modules/testing/include/vkcv/testing/Test.hpp b/modules/testing/include/vkcv/testing/Test.hpp new file mode 100644 index 00000000..7f020ce4 --- /dev/null +++ b/modules/testing/include/vkcv/testing/Test.hpp @@ -0,0 +1,12 @@ +#pragma once + +namespace vkcv::testing { + + class Test { + private: + public: + void test(int test_value); + + }; + +} diff --git a/modules/testing/src/vkcv/testing/Test.cpp b/modules/testing/src/vkcv/testing/Test.cpp new file mode 100644 index 00000000..302fe986 --- /dev/null +++ b/modules/testing/src/vkcv/testing/Test.cpp @@ -0,0 +1,10 @@ + +#include "vkcv/testing/Test.hpp" + +namespace vkcv::testing { + + void Test::test(int test_value) { + // TODO: this is an example + } + +} diff --git a/projects/first_triangle/.gitignore b/projects/first_triangle/.gitignore new file mode 100644 index 00000000..7e24fd7b --- /dev/null +++ b/projects/first_triangle/.gitignore @@ -0,0 +1 @@ +first_triangle \ No newline at end of file diff --git a/projects/first_triangle/CMakeLists.txt b/projects/first_triangle/CMakeLists.txt index b7a2b52f..78c40f99 100644 --- a/projects/first_triangle/CMakeLists.txt +++ b/projects/first_triangle/CMakeLists.txt @@ -5,14 +5,20 @@ project(first_triangle) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/shaders/vert.spv DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/shaders) -file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/shaders/frag.spv DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/shaders) +# this should fix the execution path to load local files from the project +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) # adding source files to the project add_executable(first_triangle src/main.cpp) +# this should fix the execution path to load local files from the project (for MSVC) +if(MSVC) + set_target_properties(first_triangle PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + set_target_properties(first_triangle PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +endif() + # including headers of dependencies and the VkCV framework -target_include_directories(first_triangle SYSTEM BEFORE PRIVATE ${vkcv_include} ${vkcv_includes}) +target_include_directories(first_triangle SYSTEM BEFORE PRIVATE ${vkcv_include} ${vkcv_includes} ${vkcv_testing_include}) # linking with libraries from all dependencies and the VkCV framework -target_link_libraries(first_triangle vkcv ${vkcv_libraries}) +target_link_libraries(first_triangle vkcv ${vkcv_libraries} vkcv_testing) -- GitLab