Skip to content

Commit 0a5869b

Browse files
committed
3rdpartyライブラリの更新
1 parent c4efbd1 commit 0a5869b

File tree

4 files changed

+46
-14
lines changed

4 files changed

+46
-14
lines changed

3rdparty/libpng

3rdparty/zlib

Submodule zlib updated 110 files

CMakeLists.txt

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,41 @@ set(PNG_ARM_NEON "off"
288288
set(PNG_ARM_NEON_OPT "0"
289289
CACHE STRING "Enable ARM NEON optimizations")
290290
set(PNG_STATIC "defined" CACHE STRING "" FORCE)
291+
292+
# macOS 15 (Sequoia) 以降でfp.hが無いことによるエラーの対応
293+
# libpng 1.6.37ではfp.hをincludeしているが、
294+
# macOS 15以降では fp.h がシステムから削除されているためビルドエラーになる。math.hに統合されている
295+
# libpngはUnrealEngineで利用している物とバージョンを揃える必要があるためアップデートが出来ないため、fp.hという名前のヘッダーを作成し、
296+
# その中でmath.hをincludeするというアプローチでコンパイルを通す
297+
298+
if(APPLE)
299+
set(FP_H_COMPAT_DIR "${CMAKE_CURRENT_BINARY_DIR}/include_compat")
300+
file(MAKE_DIRECTORY "${FP_H_COMPAT_DIR}")
301+
file(WRITE "${FP_H_COMPAT_DIR}/fp.h"
302+
"/* macOS 15以降で削除された fp.h の互換ヘッダー
303+
* fp.h の機能は math.h に統合されているため、math.h をインクルードします。
304+
*/
305+
#ifndef _FP_H_COMPAT_
306+
#define _FP_H_COMPAT_
307+
#include <math.h>
308+
#endif
309+
")
310+
include_directories(BEFORE SYSTEM "${FP_H_COMPAT_DIR}")
311+
312+
# libpngのビルド時のみCFLAGSを一時的に変更するため、現在の値を保存
313+
set(CMAKE_C_FLAGS_SAVE "${CMAKE_C_FLAGS}")
314+
set(CMAKE_CXX_FLAGS_SAVE "${CMAKE_CXX_FLAGS}")
315+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -isystem ${FP_H_COMPAT_DIR}")
316+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${FP_H_COMPAT_DIR}")
317+
endif()
318+
291319
add_subdirectory("3rdparty/libpng")
320+
321+
# libpngのビルド後、CFLAGSを元に戻す(他のサブプロジェクトに影響を与えないため)
322+
if(APPLE)
323+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_SAVE}")
324+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_SAVE}")
325+
endif()
292326
set(PNG_INCLUDE_DIRS
293327
"${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/libpng"
294328
"${CMAKE_CURRENT_BINARY_DIR}/3rdparty/libpng")

src/CMakeLists.txt

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,22 @@ if( NOT(IOS OR ANDROID) )
3131
# 注意点:
3232
# libpngのバージョンは、Unreal EngineのPngImageWrapper.hに記載のバージョンに合わせる必要があります。
3333
# そうでないと、UEでパッケージ化したあとexeを起動したときにassertion failedのダイアログが出て強制終了になります。
34-
# Unreal Engineの対応バージョンを上げるときには併せてPngImageWrapperで利用のlibpngバージョンを確認し、
35-
# libpngのバージョンが上がる場合はlibplateau submoduleのlibpngを新しいバージョンにしたうえで下のpng15_staticの15を{major_ver}{minor_ver}に置き換える必要がありそうです。
36-
add_dependencies(plateau libjpeg-turbo png15_static tiff hmm)
37-
target_link_libraries(plateau PRIVATE ${JPEG_TURBO_LIBRARIES} png15_static tiff hmm)
34+
add_dependencies(plateau libjpeg-turbo png_static tiff hmm)
35+
target_link_libraries(plateau PRIVATE ${JPEG_TURBO_LIBRARIES} png_static tiff hmm)
3836
target_include_directories(plateau PRIVATE
3937
"${JPEG_TURBO_INCLUDE_DIRS}"
4038
"${PNG_INCLUDE_DIRS}"
4139
"${TIFF_INCLUDE}"
4240
"${HMM_INCLUDE}"
4341
)
4442
else()
45-
target_link_libraries(plateau PUBLIC
46-
"citygml"
47-
"GLTFSDK"
48-
"crypto"
49-
"ssl"
43+
target_link_libraries(plateau PUBLIC
44+
"citygml"
45+
"GLTFSDK"
46+
"crypto"
47+
"ssl"
5048
"c_wrapper"
51-
"png15_static"
49+
"png_static"
5250
"${LibOpenMeshCore}"
5351
"${LibOpenMeshTools}"
5452
"hmm"
@@ -97,7 +95,7 @@ if(BUILD_LIB_TYPE STREQUAL "static")
9795
$<TARGET_FILE:LibXml2>
9896
$<TARGET_FILE:httplib>
9997
$<TARGET_FILE:zlibstatic>
100-
$<TARGET_FILE:png15_static>
98+
$<TARGET_FILE:png_static>
10199
$<TARGET_FILE:tiff>
102100
$<TARGET_FILE:hmm>
103101
${JPEG_TURBO_LIBRARIES}
@@ -116,7 +114,7 @@ if(BUILD_LIB_TYPE STREQUAL "static")
116114
endif()
117115

118116
if(BUILD_LIB_TYPE STREQUAL "static")
119-
set(COMBINE_LIB_DEPENDS plateau citygml xerces-c GLTFSDK crypto ssl LibXml2 httplib zlibstatic libjpeg-turbo png15_static tiff ${LibOpenMeshCore} ${LibOpenMeshTools} hmm)
117+
set(COMBINE_LIB_DEPENDS plateau citygml xerces-c GLTFSDK crypto ssl LibXml2 httplib zlibstatic libjpeg-turbo png_static tiff ${LibOpenMeshCore} ${LibOpenMeshTools} hmm)
120118

121119
# windows で libファイル結合します。
122120
# 参考 : https://stackoverflow.com/questions/60190374/how-to-bundle-multiple-static-libraries-into-single-library-in-cmake-for-windows

0 commit comments

Comments
 (0)