Initial commit for vulkan tutorial
Following along the first 9 chapters of the Vulkan HelloTriangle tutorial.
This commit is contained in:
86
CMake/Findstb.cmake
Normal file
86
CMake/Findstb.cmake
Normal file
@@ -0,0 +1,86 @@
|
||||
# Findstb.cmake
|
||||
#
|
||||
# Finds the stb library (specifically stb_image.h)
|
||||
#
|
||||
# This will define the following variables
|
||||
#
|
||||
# stb_FOUND
|
||||
# stb_INCLUDE_DIRS
|
||||
#
|
||||
# and the following imported targets
|
||||
#
|
||||
# stb::stb
|
||||
#
|
||||
|
||||
# Try to find the package using pkg-config first
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(PC_stb QUIET stb)
|
||||
endif()
|
||||
|
||||
# Find the include directory
|
||||
find_path(stb_INCLUDE_DIR
|
||||
NAMES stb_image.h
|
||||
PATHS
|
||||
${PC_stb_INCLUDE_DIRS}
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
$ENV{VULKAN_SDK}/include
|
||||
${ANDROID_NDK}/sources/third_party
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../external
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../third_party
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../attachments/external
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../attachments/third_party
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../attachments/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../external
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../third_party
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../include
|
||||
PATH_SUFFIXES stb
|
||||
)
|
||||
|
||||
# If the include directory wasn't found, use FetchContent to download and build
|
||||
if(NOT stb_INCLUDE_DIR)
|
||||
# If not found, use FetchContent to download and build
|
||||
include(FetchContent)
|
||||
|
||||
message(STATUS "stb_image.h not found, fetching from GitHub...")
|
||||
FetchContent_Declare(
|
||||
stb
|
||||
GIT_REPOSITORY https://github.com/nothings/stb.git
|
||||
GIT_TAG master # stb doesn't use version tags, so we use master
|
||||
)
|
||||
|
||||
# Set policy to suppress the deprecation warning
|
||||
if(POLICY CMP0169)
|
||||
cmake_policy(SET CMP0169 OLD)
|
||||
endif()
|
||||
|
||||
# Populate the content
|
||||
FetchContent_GetProperties(stb)
|
||||
if(NOT stb_POPULATED)
|
||||
FetchContent_Populate(stb)
|
||||
endif()
|
||||
|
||||
# stb is a header-only library with no CMakeLists.txt, so we just need to set the include directory
|
||||
set(stb_INCLUDE_DIR ${stb_SOURCE_DIR})
|
||||
endif()
|
||||
|
||||
# Set the variables
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(stb
|
||||
REQUIRED_VARS stb_INCLUDE_DIR
|
||||
)
|
||||
|
||||
if(stb_FOUND)
|
||||
set(stb_INCLUDE_DIRS ${stb_INCLUDE_DIR})
|
||||
|
||||
# Create an imported target
|
||||
if(NOT TARGET stb::stb)
|
||||
add_library(stb::stb INTERFACE IMPORTED)
|
||||
set_target_properties(stb::stb PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${stb_INCLUDE_DIRS}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(stb_INCLUDE_DIR)
|
||||
Reference in New Issue
Block a user