Skip to content

Commit 43adef3

Browse files
committed
fix: sfml build
1 parent be2beb1 commit 43adef3

3 files changed

Lines changed: 36 additions & 17 deletions

File tree

Projects/MapViewer/CMakeLists.txt

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -87,24 +87,37 @@ elseif(APPLE AND SFML_FOUND)
8787
get_target_property(SFML_GRAPHICS_LIB SFML::Graphics IMPORTED_LOCATION)
8888
endif()
8989

90-
if(SFML_GRAPHICS_LIB)
90+
# Check if SFML is statically or dynamically linked
91+
set(SFML_IS_STATIC FALSE)
92+
if(SFML_GRAPHICS_LIB AND SFML_GRAPHICS_LIB MATCHES "\\.a$")
93+
set(SFML_IS_STATIC TRUE)
94+
elseif(SFML_STATIC_LIBRARIES)
95+
set(SFML_IS_STATIC TRUE)
96+
endif()
97+
98+
add_custom_command(
99+
TARGET ${BINARY_NAME} POST_BUILD
100+
# MacOS/にProdConfig.tsvをコピー
101+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
102+
"${CMAKE_CURRENT_SOURCE_DIR}/${OS}/ProdConfig.tsv"
103+
"$<TARGET_FILE_DIR:${BINARY_NAME}>/Config.tsv"
104+
105+
# Resources/にappicon.icnsをコピー
106+
COMMAND ${CMAKE_COMMAND} -E make_directory
107+
"$<TARGET_BUNDLE_CONTENT_DIR:${BINARY_NAME}>/Resources"
108+
COMMAND ${CMAKE_COMMAND} -E copy_if_different
109+
"${CMAKE_CURRENT_SOURCE_DIR}/${OS}/appicon.icns"
110+
"$<TARGET_BUNDLE_CONTENT_DIR:${BINARY_NAME}>/Resources/appicon.icns"
111+
COMMENT "Setting up app bundle resources..."
112+
)
113+
114+
# Only copy SFML dylibs if using dynamic linking
115+
if(SFML_GRAPHICS_LIB AND NOT SFML_IS_STATIC)
91116
get_filename_component(SFML_LIB_DIR ${SFML_GRAPHICS_LIB} DIRECTORY)
92117
set(APP_FRAMEWORKS_DIR "$<TARGET_BUNDLE_CONTENT_DIR:${BINARY_NAME}>/Frameworks")
93118

94119
add_custom_command(
95120
TARGET ${BINARY_NAME} POST_BUILD
96-
# MacOS/にProdConfig.tsvをコピー
97-
COMMAND ${CMAKE_COMMAND} -E copy_if_different
98-
"${CMAKE_CURRENT_SOURCE_DIR}/${OS}/ProdConfig.tsv"
99-
"$<TARGET_FILE_DIR:${BINARY_NAME}>/Config.tsv"
100-
101-
# Resources/にappicon.icnsをコピー
102-
COMMAND ${CMAKE_COMMAND} -E make_directory
103-
"$<TARGET_BUNDLE_CONTENT_DIR:${BINARY_NAME}>/Resources"
104-
COMMAND ${CMAKE_COMMAND} -E copy_if_different
105-
"${CMAKE_CURRENT_SOURCE_DIR}/${OS}/appicon.icns"
106-
"$<TARGET_BUNDLE_CONTENT_DIR:${BINARY_NAME}>/Resources/appicon.icns"
107-
108121
# SFML の dylib をコピーして install_name_tool でパスを修正
109122
COMMAND ${CMAKE_COMMAND} -E make_directory
110123
${APP_FRAMEWORKS_DIR}
@@ -123,6 +136,8 @@ elseif(APPLE AND SFML_FOUND)
123136
COMMAND install_name_tool -change ${SFML_LIB_DIR}/libsfml-system.3.0.dylib @rpath/libsfml-system.3.0.dylib $<TARGET_FILE:${BINARY_NAME}>
124137
COMMENT "Copying SFML dylibs to app bundle and fixing install names..."
125138
)
139+
else()
140+
message(STATUS "Using static SFML libraries - no dylibs to copy")
126141
endif()
127142
else()
128143
# Development: standard executable

Scripts/DevelopmentBuild.sh

100644100755
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
#!/bin/bash
22

3-
ROOT_PATH=$(dirname $(dirname "$0"))
3+
# Get absolute path to project root
4+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
5+
ROOT_PATH="$(cd "${SCRIPT_DIR}/.." && pwd)"
46
cd "${ROOT_PATH}"
57
BUILD_DIR_NAME="DevelopmentBuild"
68

79
rm -rf "${BUILD_DIR_NAME}"
810
mkdir "${BUILD_DIR_NAME}"
911

10-
cmake -S"Projects/MapViewer" -B"${BUILD_DIR_NAME}" -DCMAKE_BUILD_TYPE=Release
12+
cmake -S"Projects/MapViewer" -B"${BUILD_DIR_NAME}" -DCMAKE_BUILD_TYPE=Release -DSFML_STATIC_LIBRARIES=TRUE -DCMAKE_TOOLCHAIN_FILE="${ROOT_PATH}/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_INSTALLED_DIR="${ROOT_PATH}/vcpkg_installed"
1113
cmake --build "${BUILD_DIR_NAME}"

Scripts/ProductionBuild.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
#!/bin/bash
22

3-
ROOT_PATH=$(dirname $(dirname "$0"))
3+
# Get absolute path to project root
4+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
5+
ROOT_PATH="$(cd "${SCRIPT_DIR}/.." && pwd)"
46
cd "${ROOT_PATH}"
57
BUILD_DIR_NAME="ProductionBuild"
68

79
rm -rf "${BUILD_DIR_NAME}"
810
mkdir "${BUILD_DIR_NAME}"
911

10-
cmake -S"Projects/MapViewer" -B"${BUILD_DIR_NAME}" -DCMAKE_BUILD_TYPE=Release -DPAXS_BUILD_TYPE=Production
12+
cmake -S"Projects/MapViewer" -B"${BUILD_DIR_NAME}" -DCMAKE_BUILD_TYPE=Release -DPAXS_BUILD_TYPE=Production -DSFML_STATIC_LIBRARIES=TRUE -DCMAKE_TOOLCHAIN_FILE="${ROOT_PATH}/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_INSTALLED_DIR="${ROOT_PATH}/vcpkg_installed"
1113
cmake --build "${BUILD_DIR_NAME}"

0 commit comments

Comments
 (0)