From f6006041c6db9662712d2d8459159a0f0676c67f Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Sun, 24 Sep 2023 18:48:10 -0600 Subject: [PATCH] Mark vk-bootstrap as static & cleanup CMake Marks the main vk-bootstrap library as a static library. Removes unnecessary code, adds a language & description to the project field. --- CMakeLists.txt | 59 ++++++++++++++++++++++-------------------- example/CMakeLists.txt | 16 ++++++------ ext/CMakeLists.txt | 1 - 3 files changed, 39 insertions(+), 37 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cfb8fb..1edac0d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.10 FATAL_ERROR) -project(VulkanBootstrap) +project(VulkanBootstrap + LANGUAGES CXX + DESCRIPTION "A Vulkan utility library to ease the initialization steps in Vulkan") option(VK_BOOTSTRAP_DISABLE_WARNINGS "Disable warnings during compilation" OFF) option(VK_BOOTSTRAP_WERROR "Enable warnings as errors during compilation" OFF) @@ -12,25 +14,25 @@ mark_as_advanced(VK_BOOTSTRAP_VULKAN_HEADER_DIR) include(gen/CurrentBuildVulkanVersion.cmake) if(NOT "${VK_BOOTSTRAP_VULKAN_HEADER_DIR}" STREQUAL "") - target_include_directories(vk-bootstrap-vulkan-headers INTERFACE $) + target_include_directories(vk-bootstrap-vulkan-headers INTERFACE $) else () - find_package(Vulkan QUIET) + find_package(Vulkan QUIET) - if(${Vulkan_INCLUDE_DIR} STREQUAL "Vulkan_INCLUDE_DIR-NOTFOUND") - include(FetchContent) - FetchContent_Declare( - VulkanHeaders - GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Headers - GIT_TAG ${VK_BOOTSTRAP_SOURCE_HEADER_VERSION_GIT_TAG} - ) - FetchContent_MakeAvailable(VulkanHeaders) - target_link_libraries(vk-bootstrap-vulkan-headers INTERFACE Vulkan::Headers) - else() - set_target_properties(vk-bootstrap-vulkan-headers PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${Vulkan_INCLUDE_DIR}) - endif() + if(${Vulkan_INCLUDE_DIR} STREQUAL "Vulkan_INCLUDE_DIR-NOTFOUND") + include(FetchContent) + FetchContent_Declare( + VulkanHeaders + GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Headers + GIT_TAG ${VK_BOOTSTRAP_SOURCE_HEADER_VERSION_GIT_TAG} + ) + FetchContent_MakeAvailable(VulkanHeaders) + target_link_libraries(vk-bootstrap-vulkan-headers INTERFACE Vulkan::Headers) + else() + set_target_properties(vk-bootstrap-vulkan-headers PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${Vulkan_INCLUDE_DIR}) + endif() endif() -add_library(vk-bootstrap src/VkBootstrap.h src/VkBootstrap.cpp src/VkBootstrapDispatch.h) +add_library(vk-bootstrap STATIC src/VkBootstrap.h src/VkBootstrap.cpp src/VkBootstrapDispatch.h) add_library(vk-bootstrap::vk-bootstrap ALIAS vk-bootstrap) add_library(vk-bootstrap-compiler-warnings INTERFACE) @@ -38,13 +40,13 @@ add_library(vk-bootstrap-compiler-warnings INTERFACE) # Determine whether we're compiling with clang++ string(FIND "${CMAKE_CXX_COMPILER}" "clang++" VK_BOOTSTRAP_COMPILER_CLANGPP) if(VK_BOOTSTRAP_COMPILER_CLANGPP GREATER -1) - set(VK_BOOTSTRAP_COMPILER_CLANGPP 1) + set(VK_BOOTSTRAP_COMPILER_CLANGPP 1) else() - set(VK_BOOTSTRAP_COMPILER_CLANGPP 0) + set(VK_BOOTSTRAP_COMPILER_CLANGPP 0) endif() if(NOT VK_BOOTSTRAP_DISABLE_WARNINGS) - target_compile_options(vk-bootstrap-compiler-warnings + target_compile_options(vk-bootstrap-compiler-warnings INTERFACE $<$,$,${VK_BOOTSTRAP_COMPILER_CLANGPP}>: -Wall @@ -55,22 +57,22 @@ if(NOT VK_BOOTSTRAP_DISABLE_WARNINGS) /W4> ) - if(VK_BOOTSTRAP_WERROR) - target_compile_options(vk-bootstrap-compiler-warnings + if(VK_BOOTSTRAP_WERROR) + target_compile_options(vk-bootstrap-compiler-warnings INTERFACE $<$,$,${VK_BOOTSTRAP_COMPILER_CLANGPP}>: -pedantic-errors> $<$: /WX> ) - endif() + endif() endif() target_include_directories(vk-bootstrap PUBLIC $ $) target_link_libraries(vk-bootstrap - PRIVATE + PRIVATE vk-bootstrap-compiler-warnings vk-bootstrap-vulkan-headers ${CMAKE_DL_LIBS}) @@ -78,11 +80,12 @@ target_compile_features(vk-bootstrap PUBLIC cxx_std_14) include(GNUInstallDirs) install(FILES src/VkBootstrap.h src/VkBootstrapDispatch.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -install(TARGETS vk-bootstrap vk-bootstrap-compiler-warnings vk-bootstrap-vulkan-headers - EXPORT vk-bootstrap-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS + vk-bootstrap + vk-bootstrap-compiler-warnings + vk-bootstrap-vulkan-headers + EXPORT + vk-bootstrap-targets) # By default, we want to only build tests if this repo is built standalone, but still should be configurable by the user if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index d6cdcde..7b21dc2 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -1,21 +1,21 @@ add_executable(vk-bootstrap-triangle triangle.cpp) target_link_libraries(vk-bootstrap-triangle - PRIVATE + PRIVATE glfw vk-bootstrap vk-bootstrap-compiler-warnings vk-bootstrap-vulkan-headers) -target_include_directories(vk-bootstrap-triangle PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) #path to build directory for shaders +target_include_directories(vk-bootstrap-triangle PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) # path to build directory for shaders add_custom_command( - TARGET vk-bootstrap-triangle - POST_BUILD - COMMAND + TARGET vk-bootstrap-triangle + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/example/shaders ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}) + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}) configure_file ( - "${PROJECT_SOURCE_DIR}/example/example_config.h.in" - "${CMAKE_CURRENT_BINARY_DIR}/example_config.h" + "${PROJECT_SOURCE_DIR}/example/example_config.h.in" + "${CMAKE_CURRENT_BINARY_DIR}/example_config.h" ) diff --git a/ext/CMakeLists.txt b/ext/CMakeLists.txt index b70dba5..737ed10 100644 --- a/ext/CMakeLists.txt +++ b/ext/CMakeLists.txt @@ -8,7 +8,6 @@ option(CATCH_ENABLE_WERROR "" OFF) option(CATCH_INSTALL_DOCS "" OFF) option(CATCH_INSTALL_HELPERS "" OFF) option(CATCH_INSTALL_EXTRAS "" ON) -set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1) #remove Catch2 target spam include(FetchContent) FetchContent_Declare(