Use imported targets for linking to libpng

This massively simplifies the process lol
This commit is contained in:
ISSOtm
2026-03-15 12:20:18 +01:00
committed by Rangi
parent 2d0ac7eeb0
commit d8722b6705
3 changed files with 5 additions and 23 deletions

View File

@@ -123,7 +123,8 @@ if(MSVC OR NOT PKG_CONFIG_FOUND)
# this is most evident on macOS but can occur on Linux too
find_package(PNG REQUIRED)
else()
pkg_check_modules(LIBPNG REQUIRED libpng)
pkg_check_modules(LIBPNG REQUIRED IMPORTED_TARGET libpng)
add_library(PNG::PNG ALIAS PkgConfig::LIBPNG)
endif()
include_directories("include")

View File

@@ -108,13 +108,4 @@ install(TARGETS rgbasm rgblink rgbfix rgbgfx RUNTIME)
set_target_properties(rgbasm rgblink rgbfix rgbgfx PROPERTIES
# hack for MSVC: no-op generator expression to stop generation of "per-configuration subdirectory"
RUNTIME_OUTPUT_DIRECTORY $<1:${CMAKE_SOURCE_DIR}>)
if(LIBPNG_FOUND) # pkg-config
target_include_directories(rgbgfx PRIVATE ${LIBPNG_INCLUDE_DIRS})
target_link_directories(rgbgfx PRIVATE ${LIBPNG_LIBRARY_DIRS})
target_link_libraries(rgbgfx PRIVATE ${LIBPNG_LIBRARIES})
else()
target_compile_definitions(rgbgfx PRIVATE ${PNG_DEFINITIONS})
target_include_directories(rgbgfx PRIVATE ${PNG_INCLUDE_DIRS})
target_link_libraries(rgbgfx PRIVATE ${PNG_LIBRARIES})
endif()
target_link_libraries(rgbgfx PRIVATE PNG::PNG)

View File

@@ -9,18 +9,8 @@ add_executable(rgbgfx_test gfx/rgbgfx_test.cpp)
set_target_properties(randtilegen rgbgfx_test PROPERTIES
# hack for MSVC: no-op generator expression to stop generation of "per-configuration subdirectory"
RUNTIME_OUTPUT_DIRECTORY $<1:${CMAKE_CURRENT_SOURCE_DIR}/gfx>)
foreach(TARGET randtilegen rgbgfx_test)
if(LIBPNG_FOUND) # pkg-config
target_include_directories(${TARGET} PRIVATE ${LIBPNG_INCLUDE_DIRS})
target_link_directories(${TARGET} PRIVATE ${LIBPNG_LIBRARY_DIRS})
target_link_libraries(${TARGET} PRIVATE ${LIBPNG_LIBRARIES})
else()
target_compile_definitions(${TARGET} PRIVATE ${PNG_DEFINITIONS})
target_include_directories(${TARGET} PRIVATE ${PNG_INCLUDE_DIRS})
target_link_libraries(${TARGET} PRIVATE ${PNG_LIBRARIES})
endif()
endforeach()
target_link_libraries(randtilegen PRIVATE PNG::PNG)
target_link_libraries(rgbgfx_test PRIVATE PNG::PNG)
set(ONLY_FREE)
if(NOT TESTS_RUN_NONFREE)