Skip to content

Commit 34d3492

Browse files
committed
Fix: ImagecCodec example
1 parent 0f0f5d9 commit 34d3492

File tree

3 files changed

+53
-25
lines changed

3 files changed

+53
-25
lines changed

Codecs/CodecJPG/CMakeLists.txt

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ cmake_minimum_required(VERSION 3.10)
33

44
include(ExternalProject)
55

6-
set(LibJpegTurboFolder ../../External/libjpeg-turbo)
6+
set(LibJpegTurboFolder ${CMAKE_CURRENT_SOURCE_DIR}/../../External/libjpeg-turbo)
77
get_filename_component(LibJpegTurboFolder "${LibJpegTurboFolder}" ABSOLUTE)
88
set(NASMPATH ${CMAKE_CURRENT_SOURCE_DIR}/../../External/bintools/nasm-2.15.05/nasm.exe)
99
get_filename_component(NASMPATH "${NASMPATH}" ABSOLUTE)
10-
set(TurboJpegBinDir ${CMAKE_BINARY_DIR}/libjpeg-turbo)
10+
set(TurboJpegBinDir ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libjpeg-turbo)
11+
get_filename_component(TurboJpegBinDir "${TurboJpegBinDir}" ABSOLUTE)
1112

1213
set(LibJpegTurboArgs
1314
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
@@ -22,15 +23,37 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND NOT ${CMAKE_HOST_SYSTEM_NAME} STR
2223
list(APPEND LibJpegTurboArgs -DCMAKE_ASM_NASM_COMPILER=${NASMPATH})
2324
endif()
2425

26+
if(WIN32)
27+
set(TURBOJPEG_RUNTIME "${TurboJpegBinDir}/turbojpeg.dll")
28+
set(TURBOJPEG_IMPLIB "${TurboJpegBinDir}/turbojpeg.lib")
29+
elseif(APPLE)
30+
set(TURBOJPEG_RUNTIME "${TurboJpegBinDir}/turbojpeg.dylib")
31+
else()
32+
set(TURBOJPEG_RUNTIME "${TurboJpegBinDir}/turbojpeg.so")
33+
endif()
34+
35+
2536
ExternalProject_Add(libjpeg-turbo
2637
SOURCE_DIR ${LibJpegTurboFolder}
2738
BINARY_DIR ${TurboJpegBinDir}
2839
CMAKE_ARGS ${LibJpegTurboArgs}
2940
INSTALL_COMMAND "" # <--- disables 'ninja install'
30-
BUILD_COMMAND ${CMAKE_COMMAND} --build . --target turbojpeg
31-
BUILD_BYPRODUCTS ${TurboJpegBinDir}/turbojpeg.dll
41+
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG> --target turbojpeg
42+
BUILD_BYPRODUCTS ${TURBOJPEG_RUNTIME}
3243
)
3344

45+
add_library(libjpeg-turbo::libjpeg-turbo SHARED IMPORTED GLOBAL)
46+
47+
48+
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
49+
INTERFACE_INCLUDE_DIRECTORIES "${LibJpegTurboFolder}/src"
50+
IMPORTED_LOCATION "${TURBOJPEG_RUNTIME}"
51+
IMPORTED_IMPLIB "${TURBOJPEG_IMPLIB}" # Will be empty on non-Windows
52+
)
53+
54+
55+
add_dependencies(libjpeg-turbo::libjpeg-turbo libjpeg-turbo)
56+
3457
file(GLOB_RECURSE sourceFiles
3558
"./Source/*.h"
3659
"./Source/*.cpp"
@@ -39,14 +62,14 @@ ExternalProject_Add(libjpeg-turbo
3962
set(TargetName CodecJPG)
4063
add_library (${TargetName} ${sourceFiles} )
4164

42-
add_dependencies(${TargetName} libjpeg-turbo)
43-
target_link_libraries(${TargetName} PRIVATE ${TurboJpegBinDir}/turbojpeg.lib) # adjust to match built target name
65+
target_link_libraries(${TargetName} PRIVATE libjpeg-turbo::libjpeg-turbo) # adjust to match built target name
66+
67+
add_custom_command(TARGET ${TargetName} POST_BUILD
68+
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${TURBOJPEG_RUNTIME} ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/)
4469

45-
add_custom_command(TARGET libjpeg-turbo POST_BUILD
46-
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${TurboJpegBinDir}/turbojpeg.dll ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin/)
47-
target_include_directories(${TargetName} PRIVATE ${LibJpegTurboFolder}/src)
70+
target_include_directories(${TargetName} PRIVATE ${LibJpegTurboFolder}/src)
4871

49-
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND NOT MINGW)
72+
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") AND NOT MINGW)
5073
target_link_options(${TargetName} PUBLIC "/DELAYLOAD:turbojpeg.dll")
5174
else()
5275
endif()

Codecs/CodecTiff/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,6 @@ target_include_directories(${TargetName} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/ext
6868

6969

7070
target_link_libraries(${TargetName} tiff)
71-
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND NOT MINGW)
71+
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") AND NOT MINGW)
7272
target_link_options(${TargetName} PUBLIC "/DELAYLOAD:$<TARGET_FILE_BASE_NAME:tiff>.dll")
7373
endif()

Example/CMakeLists.txt

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required (VERSION 3.8)
1+
cmake_minimum_required (VERSION 3.10)
22

33
#Image Codec
44
set(CMAKE_CXX_STANDARD 20)
@@ -16,21 +16,26 @@ add_executable(${TargetName} ${sourceFiles})
1616
target_include_directories(${TargetName} PRIVATE ./Imageloader/Include)
1717
target_link_libraries(${TargetName} PRIVATE ImageCodec)
1818

19+
1920
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
20-
target_link_libraries(${TargetName} PRIVATE delayimp)
21+
target_link_libraries(${TargetName} PRIVATE delayimp dbghelp)
2122
endif()
2223

2324

25+
set(OUTPUT_PATH $<TARGET_FILE_DIR:${TargetName}>)
26+
2427
#Copy oiv library resources to the output dir
25-
add_custom_command(TARGET ${TargetName}
26-
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cat.jpg ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/)
27-
28-
#Copy needed dependencies to output dir
29-
add_custom_command(TARGET ${TargetName} POST_BUILD
30-
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:png_shared> ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/)
31-
32-
add_custom_command(TARGET ${TargetName} POST_BUILD
33-
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:zlib> ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/)
34-
35-
add_custom_command(TARGET ${TargetName} POST_BUILD
36-
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:turbojpeg> ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/)
28+
add_custom_command(TARGET ${TargetName} POST_BUILD
29+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cat.jpg ${OUTPUT_PATH}/)
30+
31+
#copy zlib, libpng and libjpeg-turbo dlls to the output dir
32+
add_custom_command(TARGET ${TargetName} POST_BUILD
33+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:zlib> ${OUTPUT_PATH}/)
34+
35+
add_custom_command(TARGET ${TargetName} POST_BUILD
36+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:png_shared> ${OUTPUT_PATH}/)
37+
38+
add_custom_command(TARGET ${TargetName} POST_BUILD
39+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libjpeg-turbo::libjpeg-turbo> ${OUTPUT_PATH}/)
40+
41+

0 commit comments

Comments
 (0)