mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-08-20 09:57:09 +00:00
Seperate projects properly
This commit is contained in:
parent
76bd513e84
commit
cca184d988
|
|
@ -48,80 +48,12 @@ set(MINECRAFT_SHARED_DEFINES
|
|||
# Add platform-specific defines
|
||||
list(APPEND MINECRAFT_SHARED_DEFINES ${PLATFORM_DEFINES})
|
||||
|
||||
set(WORLD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.World")
|
||||
set(CLIENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client")
|
||||
|
||||
# ---
|
||||
# Sources
|
||||
# ---
|
||||
add_subdirectory(Minecraft.World)
|
||||
add_subdirectory(Minecraft.Client)
|
||||
|
||||
# ---
|
||||
# MinecraftWorld
|
||||
# ---
|
||||
add_library(MinecraftWorld STATIC ${MINECRAFT_WORLD_SOURCES})
|
||||
target_include_directories(MinecraftWorld
|
||||
PRIVATE
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/generated/"
|
||||
"${WORLD_DIR}"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/include/"
|
||||
PUBLIC
|
||||
"${WORLD_DIR}/x64headers"
|
||||
)
|
||||
target_compile_definitions(MinecraftWorld PRIVATE
|
||||
${MINECRAFT_SHARED_DEFINES}
|
||||
_LIB
|
||||
)
|
||||
if(MSVC)
|
||||
configure_msvc_target(MinecraftWorld)
|
||||
endif()
|
||||
|
||||
# ---
|
||||
# MinecraftClient
|
||||
# ---
|
||||
add_executable(MinecraftClient WIN32 ${MINECRAFT_CLIENT_SOURCES})
|
||||
target_include_directories(MinecraftClient PRIVATE
|
||||
"${CLIENT_DIR}"
|
||||
"${CLIENT_DIR}/Windows64/Iggy/include"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/include/"
|
||||
)
|
||||
target_compile_definitions(MinecraftClient PRIVATE
|
||||
${MINECRAFT_SHARED_DEFINES}
|
||||
)
|
||||
if(MSVC)
|
||||
configure_msvc_target(MinecraftClient)
|
||||
target_link_options(MinecraftClient PRIVATE
|
||||
$<$<CONFIG:Release>:/LTCG /INCREMENTAL:NO>
|
||||
)
|
||||
endif()
|
||||
|
||||
set_target_properties(MinecraftClient PROPERTIES
|
||||
VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
)
|
||||
|
||||
target_link_libraries(MinecraftClient PRIVATE
|
||||
MinecraftWorld
|
||||
d3d11
|
||||
d3dcompiler
|
||||
XInput9_1_0
|
||||
wsock32
|
||||
legacy_stdio_definitions
|
||||
"${CLIENT_DIR}/Windows64/Iggy/lib/iggy_w64.lib"
|
||||
"${CLIENT_DIR}/Windows64/Iggy/lib/iggyperfmon_w64.lib"
|
||||
"${CLIENT_DIR}/Windows64/Iggy/lib/iggyexpruntime_w64.lib"
|
||||
$<$<CONFIG:Debug>: # Debug 4J libraries
|
||||
"${CLIENT_DIR}/Windows64/4JLibs/libs/4J_Input_d.lib"
|
||||
"${CLIENT_DIR}/Windows64/4JLibs/libs/4J_Storage_d.lib"
|
||||
"${CLIENT_DIR}/Windows64/4JLibs/libs/4J_Render_PC_d.lib"
|
||||
>
|
||||
$<$<NOT:$<CONFIG:Debug>>: # Release 4J libraries
|
||||
"${CLIENT_DIR}/Windows64/4JLibs/libs/4J_Input.lib"
|
||||
"${CLIENT_DIR}/Windows64/4JLibs/libs/4J_Storage.lib"
|
||||
"${CLIENT_DIR}/Windows64/4JLibs/libs/4J_Render_PC.lib"
|
||||
>
|
||||
)
|
||||
|
||||
# ---
|
||||
# Build versioning
|
||||
# ---
|
||||
|
|
@ -136,32 +68,15 @@ add_custom_target(GenerateBuildVer
|
|||
VERBATIM
|
||||
)
|
||||
|
||||
add_dependencies(MinecraftClient GenerateBuildVer)
|
||||
|
||||
# ---
|
||||
# Asset / redist copy
|
||||
# ---
|
||||
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/AssetCopyTargets.cmake")
|
||||
setup_asset_copy_targets()
|
||||
|
||||
# Copy redist files
|
||||
add_custom_target(CopyRedist ALL
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-DCOPY_SOURCE=${CMAKE_CURRENT_SOURCE_DIR}/x64/Release"
|
||||
"-DCOPY_DEST=${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>"
|
||||
-P "${COPY_SCRIPT}"
|
||||
COMMENT "Copying redist files..."
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
add_dependencies(MinecraftClient CopyRedist)
|
||||
add_dependencies(Minecraft.World GenerateBuildVer)
|
||||
add_dependencies(Minecraft.Client GenerateBuildVer)
|
||||
|
||||
# ---
|
||||
# Project organisation
|
||||
# ---
|
||||
# Set the startup project for Visual Studio
|
||||
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT MinecraftClient)
|
||||
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT Minecraft.Client)
|
||||
|
||||
# Setup folders for Visual Studio, just hides the build targets under a sub folder
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
set_property(TARGET CopyRedist GenerateBuildVer PROPERTY FOLDER "Build")
|
||||
set_property(TARGET GenerateBuildVer PROPERTY FOLDER "Build")
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/Common.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/Durango.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/ORBIS.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/PS3.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/PSVita.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/Windows.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/Xbox360.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/sources/Common.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/sources/Durango.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/sources/ORBIS.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/sources/PS3.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/sources/PSVita.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/sources/Windows.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/sources/Xbox360.cmake")
|
||||
|
||||
include("${CMAKE_SOURCE_DIR}/cmake/CommonSources.cmake")
|
||||
|
||||
|
|
@ -19,5 +19,67 @@ set(MINECRAFT_CLIENT_SOURCES
|
|||
${MINECRAFT_CLIENT_WINDOWS}
|
||||
# ${MINECRAFT_CLIENT_XBOX360}
|
||||
${SOURCES_COMMON}
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
add_executable(Minecraft.Client WIN32 ${MINECRAFT_CLIENT_SOURCES})
|
||||
|
||||
target_include_directories(Minecraft.Client PRIVATE
|
||||
"${CMAKE_BINARY_DIR}/generated/" # This is for the generated BuildVer.h
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Windows64/Iggy/include"
|
||||
"${CMAKE_SOURCE_DIR}/include/"
|
||||
)
|
||||
target_compile_definitions(Minecraft.Client PRIVATE
|
||||
${MINECRAFT_SHARED_DEFINES}
|
||||
)
|
||||
if(MSVC)
|
||||
configure_msvc_target(Minecraft.Client)
|
||||
target_link_options(Minecraft.Client PRIVATE
|
||||
$<$<CONFIG:Release>:/LTCG /INCREMENTAL:NO>
|
||||
)
|
||||
endif()
|
||||
|
||||
set_target_properties(Minecraft.Client PROPERTIES
|
||||
VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
)
|
||||
|
||||
target_link_libraries(Minecraft.Client PRIVATE
|
||||
Minecraft.World
|
||||
d3d11
|
||||
d3dcompiler
|
||||
XInput9_1_0
|
||||
wsock32
|
||||
legacy_stdio_definitions
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Windows64/Iggy/lib/iggy_w64.lib"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Windows64/Iggy/lib/iggyperfmon_w64.lib"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Windows64/Iggy/lib/iggyexpruntime_w64.lib"
|
||||
$<$<CONFIG:Debug>: # Debug 4J libraries
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Windows64/4JLibs/libs/4J_Input_d.lib"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Windows64/4JLibs/libs/4J_Storage_d.lib"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Windows64/4JLibs/libs/4J_Render_PC_d.lib"
|
||||
>
|
||||
$<$<NOT:$<CONFIG:Debug>>: # Release 4J libraries
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Windows64/4JLibs/libs/4J_Input.lib"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Windows64/4JLibs/libs/4J_Storage.lib"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Windows64/4JLibs/libs/4J_Render_PC.lib"
|
||||
>
|
||||
)
|
||||
|
||||
# ---
|
||||
# Asset / redist copy
|
||||
# ---
|
||||
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/AssetCopyTargets.cmake")
|
||||
setup_asset_copy_targets()
|
||||
|
||||
# Copy redist files
|
||||
add_custom_target(CopyRedist ALL
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-DCOPY_SOURCE=${CMAKE_SOURCE_DIR}/x64/Release"
|
||||
"-DCOPY_DEST=${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>"
|
||||
-P "${COPY_SCRIPT}"
|
||||
COMMENT "Copying redist files..."
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
add_dependencies(Minecraft.Client CopyRedist)
|
||||
set_property(TARGET CopyRedist PROPERTY FOLDER "Build")
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
set(COPY_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyAssets.cmake")
|
||||
|
||||
# Source;Dest pairs relative to Minecraft.Client/ and the build output.
|
||||
# Source;Dest pairs relative to the current source dir and the build output.
|
||||
# Order matters — later entries overwrite earlier ones on conflict.
|
||||
set(ASSET_FOLDER_PAIRS
|
||||
"music" "music"
|
||||
|
|
@ -22,6 +22,7 @@ set(ASSET_EXCLUDE_FILES
|
|||
"*.bat" "*.cmd"
|
||||
"*.msscmp" "*.binka"
|
||||
"*.swf" # These are built into the .arc
|
||||
"*.xui"
|
||||
)
|
||||
|
||||
# Join the exclusion patterns into a single string for passing to the copy script
|
||||
|
|
@ -40,7 +41,7 @@ function(setup_asset_copy_targets)
|
|||
|
||||
list(APPEND copy_commands
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-DCOPY_SOURCE=${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/${src}"
|
||||
"-DCOPY_SOURCE=${CMAKE_CURRENT_SOURCE_DIR}/${src}"
|
||||
"-DCOPY_DEST=${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/${dest}"
|
||||
"-DEXCLUDE_FILES=${ASSET_EXCLUDE_FILES_STR}"
|
||||
-P "${COPY_SCRIPT}"
|
||||
|
|
@ -53,7 +54,7 @@ function(setup_asset_copy_targets)
|
|||
VERBATIM
|
||||
)
|
||||
|
||||
add_dependencies(MinecraftClient AssetCopyTargets)
|
||||
add_dependencies(Minecraft.Client AssetCopyTargets)
|
||||
|
||||
set_property(TARGET AssetCopyTargets PROPERTY FOLDER "Build")
|
||||
endfunction()
|
||||
|
|
@ -17,7 +17,7 @@ if(EXCLUDE_FILES)
|
|||
string(REPLACE "|" ";" EXCLUDE_FILES "${EXCLUDE_FILES}")
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
if(CMAKE_HOST_WIN32)
|
||||
set(robocopy_args
|
||||
"${COPY_SOURCE}" "${COPY_DEST}"
|
||||
/S /MT /R:0 /W:0 /NP
|
||||
|
|
@ -35,7 +35,7 @@ if(WIN32)
|
|||
if(rc GREATER 3) # Allows for "files copied" and "no files copied" cases, but treats actual errors as failures
|
||||
message(FATAL_ERROR "robocopy failed (exit code ${rc})")
|
||||
endif()
|
||||
else()
|
||||
elseif(CMAKE_HOST_UNIX)
|
||||
set(rsync_args -av)
|
||||
|
||||
foreach(pattern IN LISTS EXCLUDE_FILES)
|
||||
|
|
@ -51,4 +51,6 @@ else()
|
|||
if(rs GREATER 0) # Any non-zero exit code indicates an error
|
||||
message(FATAL_ERROR "rsync failed (exit code ${rs})")
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported host platform for asset copying.")
|
||||
endif()
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/Common.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/Durango.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/sources/Common.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/cmake/sources/Durango.cmake")
|
||||
|
||||
include("${CMAKE_SOURCE_DIR}/cmake/CommonSources.cmake")
|
||||
|
||||
|
|
@ -9,5 +9,22 @@ set(MINECRAFT_WORLD_SOURCES
|
|||
${MINECRAFT_WORLD_COMMON}
|
||||
# ${MINECRAFT_WORLD_DURANGO}
|
||||
${SOURCES_COMMON}
|
||||
PARENT_SCOPE
|
||||
)
|
||||
|
||||
add_library(Minecraft.World STATIC ${MINECRAFT_WORLD_SOURCES})
|
||||
|
||||
target_include_directories(Minecraft.World
|
||||
PRIVATE
|
||||
"${CMAKE_BINARY_DIR}/generated/"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
"${CMAKE_SOURCE_DIR}/include/"
|
||||
PUBLIC
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/x64headers"
|
||||
)
|
||||
target_compile_definitions(Minecraft.World PRIVATE
|
||||
${MINECRAFT_SHARED_DEFINES}
|
||||
_LIB
|
||||
)
|
||||
if(MSVC)
|
||||
configure_msvc_target(Minecraft.World)
|
||||
endif()
|
||||
|
|
|
|||
Loading…
Reference in a new issue