Skip to content

Commit 7284aa4

Browse files
committed
test1
1 parent e29dc01 commit 7284aa4

File tree

1 file changed

+37
-48
lines changed

1 file changed

+37
-48
lines changed

Codecs/CodecJPG/CMakeLists.txt

Lines changed: 37 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ set(TurboJpegBinBaseDir "${CMAKE_BINARY_DIR}/libjpeg-turbo")
3636

3737
# ======== CMake arguments for libjpeg-turbo ========
3838
set(LibJpegTurboArgs
39+
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
40+
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
3941
-DENABLE_STATIC=FALSE
4042
-DWITH_FUZZ=FALSE
4143
-DWITH_JPEG=FALSE
@@ -47,48 +49,48 @@ if(WIN32 AND NOT ${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux")
4749
list(APPEND LibJpegTurboArgs -DCMAKE_ASM_NASM_COMPILER=${NASMPATH})
4850
endif()
4951

50-
# ======== Add ExternalProject ========
51-
ExternalProject_Add(libjpeg-turbo
52-
SOURCE_DIR ${LibJpegTurboFolder}
53-
BINARY_DIR ${TurboJpegBinBaseDir}
54-
CMAKE_ARGS ${LibJpegTurboArgs}
55-
INSTALL_COMMAND ""
56-
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> --target turbojpeg
57-
)
52+
# Support Custom runtime and library output directories
53+
if (CMAKE_RUNTIME_OUTPUT_DIRECTORY)
54+
set(JPG_RUNTIME_OUTPUT_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
55+
else()
56+
set(JPG_RUNTIME_OUTPUT_DIR ${TurboJpegBinBaseDir})
57+
endif()
58+
59+
60+
if (CMAKE_LIBRARY_OUTPUT_DIRECTORY)
61+
set(JPG_LIB_OUTPUT_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
62+
else()
63+
set(JPG_LIB_OUTPUT_DIR ${TurboJpegBinBaseDir})
64+
endif()
5865

5966
# ======== Declare Imported Library ========
6067
add_library(libjpeg-turbo::libjpeg-turbo SHARED IMPORTED GLOBAL)
68+
set(JPG_IMPORTED_LOCATION "")
69+
set(JPG_IMPORTED_IMPLIB "")
70+
6171

6272
if(IS_MULTI_CONFIG)
6373
# Multi-config: set per-config imported locations
6474
foreach(cfg ${CMAKE_CONFIGURATION_TYPES})
6575
string(TOUPPER "${cfg}" cfg_upper)
66-
set(cfg_bin_dir "${TurboJpegBinBaseDir}/${cfg}")
67-
68-
# Set runtime library
69-
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
70-
"IMPORTED_LOCATION_${cfg_upper}" "${cfg_bin_dir}/${JPG_RUNTIME_NAME}"
71-
)
7276

77+
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
78+
"IMPORTED_LOCATION_${cfg_upper}" "${JPG_RUNTIME_OUTPUT_DIR}/${cfg}/${JPG_RUNTIME_NAME}")
7379
# Set import library on Windows
7480
if(WIN32)
75-
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
76-
"IMPORTED_IMPLIB_${cfg_upper}" "${cfg_bin_dir}/${JPG_IMPLIB_NAME}"
77-
)
81+
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
82+
"IMPORTED_IMPLIB_${cfg_upper}" "${JPG_LIB_OUTPUT_DIR}/${cfg}/${JPG_IMPLIB_NAME}")
7883
endif()
7984
endforeach()
8085
else()
8186
# Single-config: flat directory
82-
set(cfg_bin_dir "${TurboJpegBinBaseDir}")
83-
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
84-
IMPORTED_LOCATION "${cfg_bin_dir}/${JPG_RUNTIME_NAME}"
85-
)
87+
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES IMPORTED_LOCATION
88+
"${JPG_RUNTIME_OUTPUT_DIR}/${JPG_RUNTIME_NAME}")
8689

8790
# Set import library on Windows
8891
if(WIN32)
89-
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
90-
IMPORTED_IMPLIB "${cfg_bin_dir}/${JPG_IMPLIB_NAME}"
91-
)
92+
set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES IMPORTED_IMPLIB
93+
"${JPG_LIB_OUTPUT_DIR}/${JPG_IMPLIB_NAME}")
9294
endif()
9395
endif()
9496

@@ -97,12 +99,21 @@ set_target_properties(libjpeg-turbo::libjpeg-turbo PROPERTIES
9799
INTERFACE_INCLUDE_DIRECTORIES "${LibJpegTurboFolder}/src"
98100
)
99101

102+
# ======== Add ExternalProject ========
103+
ExternalProject_Add(libjpeg-turbo
104+
SOURCE_DIR ${LibJpegTurboFolder}
105+
BINARY_DIR ${TurboJpegBinBaseDir}
106+
CMAKE_ARGS ${LibJpegTurboArgs}
107+
INSTALL_COMMAND ""
108+
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> --target turbojpeg
109+
BYPRODUCTS ${JPG_IMPORTED_LOCATION}
110+
$<$<PLATFORM_ID:Windows>:${JPG_IMPORTED_IMPLIB}>
111+
)
112+
100113
# ======== Depend on ExternalProject ========
101114
add_dependencies(libjpeg-turbo::libjpeg-turbo libjpeg-turbo)
102115

103116

104-
105-
# =========================
106117
# =========================
107118

108119
file(GLOB_RECURSE sourceFiles
@@ -115,28 +126,6 @@ add_library (${TargetName} ${sourceFiles} )
115126

116127
target_link_libraries(${TargetName} PRIVATE libjpeg-turbo::libjpeg-turbo) # adjust to match built target name
117128

118-
# ======== Copy runtime to ${CMAKE_CURRENT_BINARY_DIR} ========
119-
if(IS_MULTI_CONFIG)
120-
# Copy all configs' DLLs/SOs/DYLIBs
121-
foreach(cfg ${CMAKE_CONFIGURATION_TYPES})
122-
add_custom_command(TARGET ${TargetName} POST_BUILD
123-
COMMAND ${CMAKE_COMMAND} -E copy_if_different
124-
"$<TARGET_FILE:libjpeg-turbo::libjpeg-turbo>"
125-
"${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/")
126-
127-
endforeach()
128-
else()
129-
130-
add_custom_command(TARGET ${TargetName} POST_BUILD
131-
COMMAND ${CMAKE_COMMAND} -E copy_if_different
132-
"$<TARGET_FILE:libjpeg-turbo::libjpeg-turbo>"
133-
"${CMAKE_CURRENT_BINARY_DIR}/")
134-
endif()
135-
136-
137-
target_include_directories(${TargetName} PRIVATE ${LibJpegTurboFolder}/src)
138-
139129
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows" AND (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") AND NOT MINGW)
140130
target_link_options(${TargetName} PUBLIC "/DELAYLOAD:turbojpeg.dll")
141-
else()
142131
endif()

0 commit comments

Comments
 (0)