diff --git a/docs/BUILDING.md b/docs/BUILDING.md index aa44f3e44..a95dbc31e 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -22,7 +22,7 @@ It is recommended that you install Python and Git standalone, the install proces _Note: Be sure to either clone with the ``--recursive`` flag or do ``git submodule update --init`` after cloning to pull in the libultraship submodule!_ -2. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice +2. After setup and initial build, use the built-in OTR extraction to make your oot.otr/oot-mq.otr files. _Note: Instructions assume using powershell_ ```powershell @@ -30,22 +30,17 @@ _Note: Instructions assume using powershell_ cd Shipwright # Setup cmake project -& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64 # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging) -# Extract assets & generate OTR (run this anytime you need to regenerate OTR) -& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target ExtractAssets # --config Release (if you're packaging) -# Compile project -& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 # --config Release (if you're packaging) +# Add `-DCMAKE_BUILD_TYPE:STRING=Release` if you're packaging +& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64 -# Now you can run the executable in .\build\x64 - -# If you need to clean the project you can run -& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target clean - -# If you need to regenerate the asset headers to check them into source -& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target ExtractAssetHeaders - -# If you need a newer soh.otr only +# Generate soh.otr & 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target GenerateSohOtr + +# Compile project +# Add `--config Release` if you're packaging +& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 + +# Now you can run the executable in .\build\x64 or run in Visual Studio ``` ### Developing SoH @@ -76,6 +71,19 @@ cd "build/x64" & 'C:\Program Files\CMake\bin\cpack.exe' -G ZIP ``` +### Additional CMake Targets +#### Clean +```powershell +# If you need to clean the project you can run +C:\Program Files\CMake\bin\cmake.exe --build build-cmake --target clean +``` + +#### Regenerate Asset Headers +```powershell +# If you need to regenerate the asset headers to check them into source +C:\Program Files\CMake\bin\cmake.exe --build build-cmake --target ExtractAssetHeaders +``` + ## Linux ### Install dependencies #### Debian/Ubuntu @@ -124,13 +132,16 @@ cd Shipwright git submodule update --init # Generate Ninja project -cmake -H. -Bbuild-cmake -GNinja # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging) -DPython3_EXECUTABLE=$(which python3) (if you are using non-standard Python installations such as PyEnv) +# Add `-DCMAKE_BUILD_TYPE:STRING=Release` if you're packaging +# Add `-DPython3_EXECUTABLE=$(which python3)` if you are using non-standard Python installations such as PyEnv +cmake -H. -Bbuild-cmake -GNinja # Generate soh.otr cmake --build build-cmake --target GenerateSohOtr # Compile the project -cmake --build build-cmake # --config Release (if you're packaging) +# Add `--config Release` if you're packaging +cmake --build build-cmake # Now you can run the executable in ./build-cmake/soh/soh.elf # To develop the project open the repository in VSCode (or your preferred editor) @@ -153,11 +164,9 @@ cpack -G External (creates appimage) # If you need to clean the project you can run cmake --build build-cmake --target clean ``` - #### Regenerate Asset Headers ```bash # If you need to regenerate the asset headers to check them into source -cp OTRExporter cmake --build build-cmake --target ExtractAssetHeaders ``` @@ -172,32 +181,24 @@ _Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplac # Clone the repo git clone https://github.com/HarbourMasters/Shipwright.git cd ShipWright + # Clone the submodule libultraship git submodule update --init -# Copy the baserom to the OTRExporter folder -cp OTRExporter -# Generate Ninja project -cmake -H. -Bbuild-cmake -GNinja # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging) -# Extract assets & generate OTR (run this anytime you need to regenerate OTR) -cmake --build build-cmake --target ExtractAssets -# Compile the project -cmake --build build-cmake # --config Release (if you're packaging) -# Copy oot.otr into the Application Support directory -cp build-cmake/soh/oot.otr ~/Library/Application\ Support/com.shipofharkinian.soh/ +# Generate Ninja project +# Add `-DCMAKE_BUILD_TYPE:STRING=Release` if you're packaging +cmake -H. -Bbuild-cmake -GNinja + +# Generate soh.otr +cmake --build build-cmake --target GenerateSohOtr + +# Compile the project +# Add `--config Release` if you're packaging +cmake --build build-cmake # Now you can run the executable file: ./build-cmake/soh/soh-macos # To develop the project open the repository in VSCode (or your preferred editor) - -# If you need to clean the project you can run -cmake --build build-cmake --target clean - -# If you need to regenerate the asset headers to check them into source -cmake --build build-cmake --target ExtractAssetHeaders - -# If you need a newer soh.otr only -cmake --build build-cmake --target GenerateSohOtr ``` ### Generating a distributable @@ -209,6 +210,19 @@ cd build-cmake cpack ``` +### Additional CMake Targets +#### Clean +```bash +# If you need to clean the project you can run +cmake --build build-cmake --target clean +``` + +#### Regenerate Asset Headers +```bash +# If you need to regenerate the asset headers to check them into source +cmake --build build-cmake --target ExtractAssetHeaders +``` + ## Switch 1. Requires that your build machine is setup with the tools necessary for your platform above 2. Requires that you have the switch build tools installed diff --git a/soh/CMakeLists.txt b/soh/CMakeLists.txt index 42d12991b..784f3cc81 100644 --- a/soh/CMakeLists.txt +++ b/soh/CMakeLists.txt @@ -606,6 +606,9 @@ endif() ################################################################################ # Pre build events ################################################################################ +if (MSVC) + set(MSVC_CMD ${CMAKE_COMMAND} -E copy_directory $/assets ${CMAKE_BINARY_DIR}/soh/assets) +endif() if(NOT CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS") add_custom_command( TARGET ${PROJECT_NAME} @@ -618,6 +621,7 @@ if(NOT CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS") COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ActorList_OoTMqDbg.txt $/assets/extractor/symbols COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ObjectList_OoTMqDbg.txt $/assets/extractor/symbols COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/SymbolMap_OoTMqDbg.txt $/assets/extractor/symbols + COMMAND ${MSVC_CMD} ) endif() ################################################################################