diff --git a/3rdParty/libarchive/CMakeLists.txt b/3rdParty/libarchive/CMakeLists.txt index 10311a9..b61fed3 100644 --- a/3rdParty/libarchive/CMakeLists.txt +++ b/3rdParty/libarchive/CMakeLists.txt @@ -38,11 +38,13 @@ ExternalProject_Add(zstd BINARY_DIR zstd-build CMAKE_GENERATOR ${CMAKE_GENERATOR} CMAKE_ARGS - -DZSTD_BUILD_PROGRAMS:BOOL=OFF - -DBUILD_SHARED_LIBS:BOOL=OFF - -DCMAKE_BUILD_TYPE:STRING=Release - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL + -DZSTD_BUILD_PROGRAMS:BOOL=OFF + -DZSTD_BUILD_SHARED:BOOL=OFF + -DBUILD_SHARED_LIBS:BOOL=OFF + -DZSTD_BUILD_STATIC:BOOL=ON + -DCMAKE_BUILD_TYPE:STRING=Release + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL ) ExternalProject_Add(lz4 @@ -54,13 +56,13 @@ ExternalProject_Add(lz4 SOURCE_SUBDIR build/cmake CMAKE_GENERATOR ${CMAKE_GENERATOR} CMAKE_ARGS - -DBUILD_SHARED_LIBS:BOOL=OFF - -DLZ4_BUILD_CLI:BOOL=OFF - -DLZ4_BUILD_LEGACY_LZ4C:BOOL=OFF - -DLZ4_BUNDLE_MODE:BOOL=OFF - -DCMAKE_BUILD_TYPE:STRING=Release - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL + -DBUILD_SHARED_LIBS:BOOL=OFF + -DLZ4_BUILD_CLI:BOOL=OFF + -DLZ4_BUILD_LEGACY_LZ4C:BOOL=OFF + -DLZ4_BUNDLE_MODE:BOOL=ON + -DCMAKE_BUILD_TYPE:STRING=Release + -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} + -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL ) ExternalProject_Add( diff --git a/3rdParty/libjpeg-turbo/CMakeLists.txt b/3rdParty/libjpeg-turbo/CMakeLists.txt index f88af99..4b6d661 100644 --- a/3rdParty/libjpeg-turbo/CMakeLists.txt +++ b/3rdParty/libjpeg-turbo/CMakeLists.txt @@ -1,4 +1,5 @@ include(FetchContent) +include(../../cmake/Utils.cmake) Find_Package(libjpeg-turbo QUIET) if (libjpeg-turbo_FOUND) @@ -11,20 +12,29 @@ else () ) execute_process( COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/deps_ljt - RESULT_VARIABLE build_result + RESULT_VARIABLE build_result ) - if (NOT ${build_result} EQUAL "0") - message(FATAL_ERROR "Failed to build libjpeg-turbo!") - endif() + if (NOT ${build_result} EQUAL "0") + message(FATAL_ERROR "Failed to build libjpeg-turbo!") + endif() set(libjpeg-turbo_BUILT "built libjpeg-turbo" CACHE INTERNAL ON) endif () function(LinkLibJpegTurbo TARGET) - if (libjpeg-turbo_BUILT) - list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps_ljt/INSTALL/lib/cmake) - endif() - find_package(libjpeg-turbo REQUIRED) - target_link_libraries(${TARGET} PUBLIC libjpeg-turbo::turbojpeg-static) + if (libjpeg-turbo_BUILT) + FindCmakeConfigDirs("${CMAKE_BINARY_DIR}/deps_ljt/INSTALL/" CMAKE_PREFIX_PATH) + endif() + find_package(libjpeg-turbo REQUIRED) + message("libjpeg-turbo was found in: ${libjpeg-turbo_DIR}") + if (TARGET libjpeg-turbo::turbojpeg-static) + target_link_libraries(${TARGET} PUBLIC libjpeg-turbo::turbojpeg-static) + message("Linking static libjpeg-turbo") + elseif (TARGET libjpeg-turbo::turbojpeg) + target_link_libraries(${TARGET} PUBLIC libjpeg-turbo::turbojpeg) + message("Linking shared libjpeg-turbo") + else () + message(FATAL_ERROR "Neither static nor shared libjpeg-turbo exists") + endif () endfunction() \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index a475c20..c574bbe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,4 +105,4 @@ LinkAssimp(openVulkanoCpp) LinkLibArchive(openVulkanoCpp) LinkLibJpegTurbo(openVulkanoCpp) -set(VS_STARTUP_PROJECT openVulkanoCpp) +set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT openVulkanoCpp) diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake new file mode 100644 index 0000000..c10f377 --- /dev/null +++ b/cmake/Utils.cmake @@ -0,0 +1,10 @@ +function(FindCmakeConfigDirs BASE_DIR OUTPUT_NAME) + file(GLOB_RECURSE ALL_CONFIGS "${BASE_DIR}/*[Cc]onfig.cmake") + set(PACKAGE_SUB_DIRS "") + foreach(CONF ${ALL_CONFIGS}) + get_filename_component(DIR_NAME "${CONF}" DIRECTORY) + list(APPEND PACKAGE_SUB_DIRS "${DIR_NAME}") + endforeach() + list(REMOVE_DUPLICATES PACKAGE_SUB_DIRS) + set(${OUTPUT_NAME} ${PACKAGE_SUB_DIRS} PARENT_SCOPE) +endfunction() \ No newline at end of file