Skip to content
Snippets Groups Projects
Verified Commit d48d3576 authored by Tobias Frisch's avatar Tobias Frisch
Browse files

Add installation targets for libraries and headers

parent 38eaacff
Branches
Tags
No related merge requests found
Showing
with 115 additions and 57 deletions
......@@ -118,12 +118,14 @@ message(STATUS "Framework:")
message(" - Includes: [ ${vkcv_includes} ]")
message(" - Libraries: [ ${vkcv_libraries} ]")
message(" - Flags: [ ${vkcv_flags} ]")
message(" - Headers: [ ${vkcv_headers} ]")
# set the compiler flags for the framework
set(CMAKE_CXX_FLAGS ${vkcv_flags})
# create VkCV framework as library using all source files
add_library(vkcv ${vkcv_build_attribute} ${vkcv_sources})
set_target_properties(vkcv PROPERTIES PUBLIC_HEADER "${vkcv_headers}")
if(MSVC)
#enable multicore compilation on visual studio
......@@ -171,4 +173,7 @@ if (vkcv_parent_scope)
set(vkcv_includes ${vkcv_includes} PARENT_SCOPE)
set(vkcv_libraries ${vkcv_libraries} PARENT_SCOPE)
endif()
\ No newline at end of file
endif()
install(TARGETS vkcv PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv)
......@@ -54,3 +54,6 @@ if (vkcv_definitions)
endif ()
list(JOIN vkcv_flags " " vkcv_flags)
# add custom function to filter headers from source file lists
include(${vkcv_config_ext}/FilterHeaders.cmake)
......@@ -154,6 +154,8 @@ set(vkcv_sources
${vkcv_source}/vkcv/RayTracingPipelineConfig.cpp
)
filter_headers(vkcv_sources ${vkcv_include} vkcv_headers)
if (BUILD_CLANG_FORMAT)
message(STATUS "Clang-Format: ON")
......
function(filter_headers sources include_path headers)
set(header_list "")
foreach(src_path IN ITEMS ${${sources}})
string(FIND ${src_path} ${include_path} src_include_dir)
if (${src_include_dir} MATCHES 0)
list(APPEND header_list ${src_path})
endif()
endforeach()
set(${headers} "${header_list}" PARENT_SCOPE)
endfunction()
......@@ -13,7 +13,6 @@ add_subdirectory(material)
add_subdirectory(meshlet)
add_subdirectory(scene)
add_subdirectory(shader_compiler)
add_subdirectory(testing)
add_subdirectory(upscaling)
message(STATUS "Modules:")
......
......@@ -13,6 +13,8 @@ set(vkcv_algorithm_sources
${vkcv_algorithm_source}/vkcv/algorithm/SinglePassDownsampler.cpp
)
filter_headers(vkcv_algorithm_sources ${vkcv_algorithm_include} vkcv_algorithm_headers)
# Setup some path variables to load libraries
set(vkcv_algorithm_lib lib)
set(vkcv_algorithm_lib_path ${PROJECT_SOURCE_DIR}/${vkcv_algorithm_lib})
......@@ -22,6 +24,7 @@ include(config/FidelityFX_SPD.cmake)
# adding source files to the project
add_library(vkcv_algorithm ${vkcv_build_attribute} ${vkcv_algorithm_sources})
set_target_properties(vkcv_algorithm PROPERTIES PUBLIC_HEADER "${vkcv_algorithm_headers}")
# link the required libraries to the module
target_link_libraries(vkcv_algorithm ${vkcv_algorithm_libraries} vkcv vkcv_shader_compiler vkcv_camera vkcv_asset_loader)
......@@ -39,3 +42,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_algorithm PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/algorithm)
......@@ -14,8 +14,11 @@ set(vkcv_asset_loader_sources
${vkcv_asset_loader_source}/vkcv/asset/asset_loader.cpp
)
filter_headers(vkcv_asset_loader_sources ${vkcv_asset_loader_include} vkcv_asset_loader_headers)
# adding source files to the module
add_library(vkcv_asset_loader ${vkcv_build_attribute} ${vkcv_asset_loader_sources})
set_target_properties(vkcv_asset_loader PROPERTIES PUBLIC_HEADER "${vkcv_asset_loader_headers}")
# Setup some path variables to load libraries
set(vkcv_asset_loader_lib lib)
......@@ -48,3 +51,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_asset_loader PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/asset)
......@@ -11,17 +11,24 @@ set(vkcv_camera_include ${PROJECT_SOURCE_DIR}/include)
set(vkcv_camera_sources
${vkcv_camera_include}/vkcv/camera/Camera.hpp
${vkcv_camera_source}/vkcv/camera/Camera.cpp
${vkcv_camera_include}/vkcv/camera/CameraManager.hpp
${vkcv_camera_source}/vkcv/camera/CameraManager.cpp
${vkcv_camera_include}/vkcv/camera/CameraController.hpp
${vkcv_camera_include}/vkcv/camera/PilotCameraController.hpp
${vkcv_camera_source}/vkcv/camera/PilotCameraController.cpp
${vkcv_camera_include}/vkcv/camera/TrackballCameraController.hpp
${vkcv_camera_source}/vkcv/camera/TrackballCameraController.cpp
)
filter_headers(vkcv_camera_sources ${vkcv_camera_include} vkcv_camera_headers)
# adding source files to the project
add_library(vkcv_camera ${vkcv_build_attribute} ${vkcv_camera_sources})
set_target_properties(vkcv_camera PROPERTIES PUBLIC_HEADER "${vkcv_camera_headers}")
# Setup some path variables to load libraries
set(vkcv_camera_lib lib)
......@@ -51,3 +58,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_camera PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/camera)
......@@ -16,6 +16,8 @@ set(vkcv_effects_sources
${vkcv_effects_source}/vkcv/effects/BloomAndFlaresEffect.cpp
)
filter_headers(vkcv_effects_sources ${vkcv_effects_include} vkcv_effects_headers)
set(vkcv_effects_shaders ${PROJECT_SOURCE_DIR}/shaders)
include_shader(${vkcv_effects_shaders}/bloomDownsample.comp ${vkcv_effects_include} ${vkcv_effects_source})
......@@ -35,6 +37,7 @@ list(APPEND vkcv_effects_sources ${vkcv_effects_include}/lensFlares.comp.hxx)
# adding source files to the project
add_library(vkcv_effects ${vkcv_build_attribute} ${vkcv_effects_sources})
set_target_properties(vkcv_effects PROPERTIES PUBLIC_HEADER "${vkcv_effects_headers}")
# link the required libraries to the module
target_link_libraries(vkcv_effects ${vkcv_effects_libraries} vkcv vkcv_shader_compiler vkcv_camera vkcv_asset_loader)
......@@ -52,3 +55,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_effects PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/effects)
......@@ -11,22 +11,31 @@ set(vkcv_geometry_include ${PROJECT_SOURCE_DIR}/include)
set(vkcv_geometry_sources
${vkcv_geometry_include}/vkcv/geometry/Geometry.hpp
${vkcv_geometry_source}/vkcv/geometry/Geometry.cpp
${vkcv_geometry_include}/vkcv/geometry/Volume.hpp
${vkcv_geometry_source}/vkcv/geometry/Volume.cpp
${vkcv_geometry_include}/vkcv/geometry/Circular.hpp
${vkcv_geometry_source}/vkcv/geometry/Circular.cpp
${vkcv_geometry_include}/vkcv/geometry/Sphere.hpp
${vkcv_geometry_source}/vkcv/geometry/Sphere.cpp
${vkcv_geometry_include}/vkcv/geometry/Cuboid.hpp
${vkcv_geometry_source}/vkcv/geometry/Cuboid.cpp
${vkcv_geometry_include}/vkcv/geometry/Cylinder.hpp
${vkcv_geometry_source}/vkcv/geometry/Cylinder.cpp
${vkcv_geometry_include}/vkcv/geometry/Teapot.hpp
${vkcv_geometry_source}/vkcv/geometry/Teapot.cpp
)
filter_headers(vkcv_geometry_sources ${vkcv_geometry_include} vkcv_geometry_headers)
# adding source files to the project
add_library(vkcv_geometry ${vkcv_build_attribute} ${vkcv_geometry_sources})
set_target_properties(vkcv_geometry PROPERTIES PUBLIC_HEADER "${vkcv_geometry_headers}")
# Setup some path variables to load libraries
set(vkcv_geometry_lib lib)
......@@ -56,3 +65,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_geometry PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/geometry)
......@@ -12,7 +12,9 @@ set(vkcv_gui_include ${PROJECT_SOURCE_DIR}/include)
set(vkcv_gui_sources
${vkcv_gui_include}/vkcv/gui/GUI.hpp
${vkcv_gui_source}/vkcv/gui/GUI.cpp
)
)
filter_headers(vkcv_gui_sources ${vkcv_gui_include} vkcv_gui_headers)
# Setup some path variables to load libraries
set(vkcv_gui_lib lib)
......@@ -23,6 +25,7 @@ include(config/ImGui.cmake)
# adding source files to the module
add_library(vkcv_gui ${vkcv_build_attribute} ${vkcv_gui_sources} ${vkcv_imgui_sources})
set_target_properties(vkcv_gui PROPERTIES PUBLIC_HEADER "${vkcv_gui_headers}")
# link the required libraries to the module
target_link_libraries(vkcv_gui ${vkcv_gui_libraries} vkcv ${vkcv_libraries})
......@@ -42,3 +45,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_gui PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/gui)
......@@ -14,8 +14,11 @@ set(vkcv_material_sources
${vkcv_material_source}/vkcv/material/Material.cpp
)
filter_headers(vkcv_material_sources ${vkcv_material_include} vkcv_material_headers)
# adding source files to the module
add_library(vkcv_material ${vkcv_build_attribute} ${vkcv_material_sources})
set_target_properties(vkcv_material PROPERTIES PUBLIC_HEADER "${vkcv_material_headers}")
# link the required libraries to the module
target_link_libraries(vkcv_material vkcv ${vkcv_libraries})
......@@ -33,3 +36,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_material PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/material)
......@@ -17,11 +17,14 @@ set(vkcv_meshlet_sources
${vkcv_meshlet_source}/vkcv/meshlet/Tipsify.cpp
${vkcv_meshlet_include}/vkcv/meshlet/Forsyth.hpp
${vkcv_meshlet_source}/vkcv/meshlet/Forsyth.cpp)
${vkcv_meshlet_source}/vkcv/meshlet/Forsyth.cpp
)
filter_headers(vkcv_meshlet_sources ${vkcv_meshlet_include} vkcv_meshlet_headers)
# adding source files to the module
add_library(vkcv_meshlet ${vkcv_build_attribute} ${vkcv_meshlet_sources})
set_target_properties(vkcv_meshlet PROPERTIES PUBLIC_HEADER "${vkcv_meshlet_headers}")
# link the required libraries to the module
target_link_libraries(vkcv_meshlet vkcv ${vkcv_libraries})
......@@ -42,3 +45,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_meshlet PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/meshlet)
......@@ -29,8 +29,11 @@ set(vkcv_scene_sources
${vkcv_scene_source}/vkcv/scene/Scene.cpp
)
filter_headers(vkcv_scene_sources ${vkcv_scene_include} vkcv_scene_headers)
# adding source files to the module
add_library(vkcv_scene ${vkcv_build_attribute} ${vkcv_scene_sources})
set_target_properties(vkcv_scene PROPERTIES PUBLIC_HEADER "${vkcv_scene_headers}")
# link the required libraries to the module
target_link_libraries(vkcv_scene vkcv)
......@@ -62,3 +65,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_scene PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/scene)
......@@ -17,8 +17,11 @@ set(vkcv_shader_compiler_sources
${vkcv_shader_compiler_source}/vkcv/shader/GLSLCompiler.cpp
)
filter_headers(vkcv_shader_compiler_sources ${vkcv_shader_compiler_include} vkcv_shader_compiler_headers)
# adding source files to the module
add_library(vkcv_shader_compiler ${vkcv_build_attribute} ${vkcv_shader_compiler_sources})
set_target_properties(vkcv_shader_compiler PROPERTIES PUBLIC_HEADER "${vkcv_shader_compiler_headers}")
# Setup some path variables to load libraries
set(vkcv_shader_compiler_lib lib)
......@@ -43,3 +46,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_shader_compiler PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/shader)
cmake_minimum_required(VERSION 3.16)
project(vkcv_testing)
# setting c++ standard for the project
set(CMAKE_CXX_STANDARD 20)
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 ${vkcv_build_attribute} ${vkcv_testing_sources})
# add the own include directory for public headers
target_include_directories(vkcv_testing BEFORE PUBLIC ${vkcv_testing_include})
if (vkcv_parent_scope)
list(APPEND vkcv_modules_includes ${vkcv_testing_include})
list(APPEND vkcv_modules_libraries vkcv_testing)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
#pragma once
namespace vkcv::testing {
class Test {
private:
public:
void test(int test_value);
};
}
#include "vkcv/testing/Test.hpp"
namespace vkcv::testing {
void Test::test(int test_value) {
// TODO: this is an example
}
}
......@@ -25,6 +25,8 @@ set(vkcv_upscaling_sources
${vkcv_upscaling_source}/vkcv/upscaling/FSR2Upscaling.cpp
)
filter_headers(vkcv_upscaling_sources ${vkcv_upscaling_include} vkcv_upscaling_headers)
# Setup some path variables to load libraries
set(vkcv_upscaling_lib lib)
set(vkcv_upscaling_lib_path ${PROJECT_SOURCE_DIR}/${vkcv_upscaling_lib})
......@@ -43,6 +45,7 @@ add_compile_definitions(${vkcv_upscaling_definitions})
# adding source files to the project
add_library(vkcv_upscaling ${vkcv_build_attribute} ${vkcv_upscaling_sources})
set_target_properties(vkcv_upscaling PROPERTIES PUBLIC_HEADER "${vkcv_upscaling_headers}")
# link the required libraries to the module
target_link_libraries(vkcv_upscaling ${vkcv_upscaling_libraries} vkcv vkcv_shader_compiler)
......@@ -60,3 +63,6 @@ if (vkcv_parent_scope)
set(vkcv_modules_includes ${vkcv_modules_includes} PARENT_SCOPE)
set(vkcv_modules_libraries ${vkcv_modules_libraries} PARENT_SCOPE)
endif()
install(TARGETS vkcv_upscaling PUBLIC_HEADER DESTINATION
${CMAKE_INSTALL_INCLUDEDIR}/vkcv/upscaling)
......@@ -9,7 +9,16 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_project(first_triangle src/main.cpp)
# including headers of dependencies and the VkCV framework
target_include_directories(first_triangle SYSTEM BEFORE PRIVATE ${vkcv_include} ${vkcv_includes} ${vkcv_testing_include} ${vkcv_camera_include} ${vkcv_shader_compiler_include} ${vkcv_gui_include})
target_include_directories(first_triangle SYSTEM BEFORE PRIVATE
${vkcv_include}
${vkcv_includes}
${vkcv_camera_include}
${vkcv_shader_compiler_include}
${vkcv_gui_include})
# linking with libraries from all dependencies and the VkCV framework
target_link_libraries(first_triangle vkcv vkcv_testing vkcv_camera vkcv_shader_compiler vkcv_gui)
target_link_libraries(first_triangle
vkcv
vkcv_camera
vkcv_shader_compiler
vkcv_gui)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment