@@ -3,11 +3,12 @@ cmake_minimum_required(VERSION 3.10)
33
44include (ExternalProject)
55
6- set (LibJpegTurboFolder ../../External/libjpeg-turbo)
6+ set (LibJpegTurboFolder ${CMAKE_CURRENT_SOURCE_DIR} / ../../External/libjpeg-turbo)
77get_filename_component (LibJpegTurboFolder "${LibJpegTurboFolder} " ABSOLUTE )
88set (NASMPATH ${CMAKE_CURRENT_SOURCE_DIR} /../../External/bintools/nasm-2.15.05/nasm.exe)
99get_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
1213set (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} )
2324endif ()
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+
2536ExternalProject_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
3962set (TargetName CodecJPG)
4063add_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" )
5174else ()
5275endif ()
0 commit comments