Working on Linux/Steam OS version
This commit is contained in:
parent
a7d17d9afd
commit
beb4fee0d8
@ -5,6 +5,8 @@ project(witcher001 LANGUAGES C CXX)
|
|||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
option(STEAMSDK "Enable Steamworks SDK integration" OFF)
|
||||||
|
|
||||||
# ===========================================
|
# ===========================================
|
||||||
# Поиск системных зависимостей Linux
|
# Поиск системных зависимостей Linux
|
||||||
# ===========================================
|
# ===========================================
|
||||||
@ -166,8 +168,7 @@ target_include_directories(witcher001 PRIVATE
|
|||||||
${LIBZIP_INCLUDE_DIRS}
|
${LIBZIP_INCLUDE_DIRS}
|
||||||
${LUA_INCLUDE_DIRS}
|
${LUA_INCLUDE_DIRS}
|
||||||
${EIGEN3_INCLUDE_DIRS}
|
${EIGEN3_INCLUDE_DIRS}
|
||||||
# sol2 - header-only, берем напрямую из thirdparty (если он там есть)
|
# sol2 - header-only, берем напрямую из thirdparty
|
||||||
# или можно установить системный libsol-dev и убрать этот путь
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/sol2-3.3.0/include"
|
"${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/sol2-3.3.0/include"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -202,6 +203,80 @@ target_link_libraries(witcher001 PRIVATE
|
|||||||
pthread
|
pthread
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# ===========================================
|
||||||
|
# Интеграция Steamworks SDK (если STEAMSDK=ON)
|
||||||
|
# ===========================================
|
||||||
|
if(STEAMSDK)
|
||||||
|
message(STATUS "Steamworks SDK integration is ENABLED.")
|
||||||
|
|
||||||
|
target_compile_definitions(witcher001 PRIVATE STEAMSDK)
|
||||||
|
|
||||||
|
set(STEAM_SDK_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/steamworks_sdk_164/sdk")
|
||||||
|
|
||||||
|
target_include_directories(witcher001 PRIVATE
|
||||||
|
"${STEAM_SDK_DIR}/public"
|
||||||
|
"${STEAM_SDK_DIR}/public/steam"
|
||||||
|
)
|
||||||
|
|
||||||
|
set(STEAM_LIB_DIR "${STEAM_SDK_DIR}/redistributable_bin/linux64")
|
||||||
|
set(STEAM_LIB_NAME "steam_api")
|
||||||
|
set(STEAM_SO_NAME "libsteam_api.so")
|
||||||
|
|
||||||
|
find_library(STEAM_LIBRARY
|
||||||
|
NAMES ${STEAM_LIB_NAME}
|
||||||
|
PATHS ${STEAM_LIB_DIR}
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
if(STEAM_LIBRARY)
|
||||||
|
target_link_libraries(witcher001 PRIVATE ${STEAM_LIBRARY})
|
||||||
|
message(STATUS "Found Steam API library: ${STEAM_LIBRARY}")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Steam API library (${STEAM_LIB_NAME}) NOT found in ${STEAM_LIB_DIR}!")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/steam_appid.txt" "4945840")
|
||||||
|
else()
|
||||||
|
message(STATUS "Steamworks SDK integration is DISABLED.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ===========================================
|
||||||
|
# Настройка RPATH и копирование динамических библиотек
|
||||||
|
# ===========================================
|
||||||
|
|
||||||
|
# Указываем линкеру искать .so файлы в той же папке, где лежит бинарник ($ORIGIN)
|
||||||
|
set_target_properties(witcher001 PROPERTIES
|
||||||
|
INSTALL_RPATH "$ORIGIN"
|
||||||
|
BUILD_WITH_INSTALL_RPATH TRUE
|
||||||
|
)
|
||||||
|
|
||||||
|
# Поиск директорий, где лежат библиотеки
|
||||||
|
get_filename_component(LUA_SO_DIR ${LUA_SO_PATH} DIRECTORY)
|
||||||
|
get_filename_component(LIBZIP_SO_DIR ${LIBZIP_SO_PATH} DIRECTORY)
|
||||||
|
|
||||||
|
add_custom_command(TARGET witcher001 POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E echo "Copying shared libraries with sonames..."
|
||||||
|
# Копируем библиотеки и все их симлинки (cp -P сохраняет структуру симлинков)
|
||||||
|
COMMAND sh -c "cp -P ${LUA_SO_DIR}/liblua5.4.so* '$<TARGET_FILE_DIR:witcher001>/'"
|
||||||
|
COMMAND sh -c "cp -P ${LIBZIP_SO_DIR}/libzip.so* '$<TARGET_FILE_DIR:witcher001>/'"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Если включен Steam, копируем libsteam_api.so и steam_appid.txt
|
||||||
|
if(STEAMSDK)
|
||||||
|
add_custom_command(TARGET witcher001 POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E echo "Copying Steam SDK components..."
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
|
"${STEAM_LIB_DIR}/${STEAM_SO_NAME}"
|
||||||
|
"$<TARGET_FILE_DIR:witcher001>/${STEAM_SO_NAME}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/steam_appid.txt"
|
||||||
|
"$<TARGET_FILE_DIR:witcher001>/steam_appid.txt"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/steam_appid.txt"
|
||||||
|
"${CMAKE_BINARY_DIR}/steam_appid.txt"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# ===========================================
|
# ===========================================
|
||||||
# Копирование ресурсов после сборки
|
# Копирование ресурсов после сборки
|
||||||
# ===========================================
|
# ===========================================
|
||||||
@ -210,8 +285,6 @@ set(RUNTIME_RESOURCE_DIRS
|
|||||||
"audio"
|
"audio"
|
||||||
)
|
)
|
||||||
|
|
||||||
# В Linux (при использовании Make/Ninja) бинарник обычно создается в CMAKE_BINARY_DIR.
|
|
||||||
# Копируем ресурсы рядом с исполняемым файлом.
|
|
||||||
foreach(resdir IN LISTS RUNTIME_RESOURCE_DIRS)
|
foreach(resdir IN LISTS RUNTIME_RESOURCE_DIRS)
|
||||||
add_custom_command(TARGET witcher001 POST_BUILD
|
add_custom_command(TARGET witcher001 POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "Copying ${resdir} to binary dir..."
|
COMMAND ${CMAKE_COMMAND} -E echo "Copying ${resdir} to binary dir..."
|
||||||
@ -219,4 +292,4 @@ foreach(resdir IN LISTS RUNTIME_RESOURCE_DIRS)
|
|||||||
"${CMAKE_SOURCE_DIR}/../${resdir}"
|
"${CMAKE_SOURCE_DIR}/../${resdir}"
|
||||||
"${CMAKE_BINARY_DIR}/${resdir}"
|
"${CMAKE_BINARY_DIR}/${resdir}"
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
Loading…
Reference in New Issue
Block a user