mirror of
https://github.com/kevinbentley/Descent3.git
synced 2025-01-22 11:28:56 +00:00
Move Descent3 built targets into "${CMAKE_BINARY_DIR}/build" directory
This solves problem of inability determine generated output directory of libraries targets. Now `add_custom_command()`, used on HOG generation, correctly locates all needed paths and not depends on generated variables.
This commit is contained in:
parent
cc7fbd46ed
commit
72e8347fe1
6
BUILD.md
6
BUILD.md
@ -49,7 +49,7 @@ The build process uses [**CMake**](https://cmake.org/) and, by default, [**Ninja
|
||||
```
|
||||
See [Build Options](#build-options) below for more information on `Debug` vs `Release`.
|
||||
|
||||
Once CMake finishes, the built files will be put in `builds\win\Descent3\Debug` or `builds\win\Descent3\Release`.
|
||||
Once CMake finishes, the built files will be put in `builds\win\build\Debug` or `builds\win\build\Release`.
|
||||
|
||||
## Building - macOS
|
||||
1. **Install the prerequisite build tools.**
|
||||
@ -87,7 +87,7 @@ Once CMake finishes, the built files will be put in `builds\win\Descent3\Debug`
|
||||
```
|
||||
See [Build Options](#build-options) below for more information on `Debug` vs `Release`.
|
||||
|
||||
Once CMake finishes, the built files will be put in `builds/mac/Descent3/Debug` or `builds/mac/Descent3/Release`.
|
||||
Once CMake finishes, the built files will be put in `builds/mac/build/Debug` or `builds/mac/build/Release`.
|
||||
|
||||
## Building - Linux
|
||||
1. **Install the prerequisite build tools.**
|
||||
@ -147,7 +147,7 @@ Once CMake finishes, the built files will be put in `builds/mac/Descent3/Debug`
|
||||
```
|
||||
See [Build Options](#build-options) below for more information on `Debug` vs `Release`.
|
||||
|
||||
Once CMake finishes, the built files will be put in `builds/linux/Descent3/Debug` or `builds/linux/Descent3/Release`.
|
||||
Once CMake finishes, the built files will be put in `builds/linux/build/Debug` or `builds/linux/build/Release`.
|
||||
|
||||
## Cross-compilation
|
||||
|
||||
|
@ -88,6 +88,15 @@ if(FORCE_PORTABLE_INSTALL)
|
||||
set(CMAKE_INSTALL_DOCDIR ".")
|
||||
endif()
|
||||
|
||||
# Get info about multi-config environment
|
||||
get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
# Properly determine output directory for generated files
|
||||
if(IS_MULTI_CONFIG)
|
||||
set(D3_GENERATED_FILES_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/build/$<CONFIG>")
|
||||
else ()
|
||||
set(D3_GENERATED_FILES_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/build")
|
||||
endif()
|
||||
|
||||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/installed" CACHE PATH "Default install path" FORCE)
|
||||
endif()
|
||||
|
@ -344,6 +344,7 @@ target_link_libraries(Descent3 PRIVATE
|
||||
${PLATFORM_LIBS})
|
||||
target_include_directories(Descent3 PRIVATE ${PROJECT_BINARY_DIR}/lib)
|
||||
target_link_options(Descent3 PRIVATE $<$<PLATFORM_ID:Windows>:/DEBUG:FULL>)
|
||||
set_target_properties(Descent3 PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/build")
|
||||
add_dependencies(Descent3
|
||||
get_git_hash
|
||||
Direct_TCP_IP_Hog
|
||||
@ -361,17 +362,6 @@ add_dependencies(Descent3
|
||||
tanarchy
|
||||
)
|
||||
|
||||
# Custom command for copying custom targets such HOG files
|
||||
# We cannot use here TARGET_FILE_DIR generated expressions since custom target don't have one
|
||||
add_custom_command(TARGET Descent3 POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/scripts/$<CONFIG>/d3-${HOG_NAME}.hog" "$<TARGET_FILE_DIR:Descent3>"
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:Descent3>/online"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/netcon/descent3onlineclient/$<CONFIG>/Descent3 Online.d3c" "$<TARGET_FILE_DIR:Descent3>/online"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/netcon/lanclient/$<CONFIG>/Direct TCP~IP.d3c" "$<TARGET_FILE_DIR:Descent3>/online"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/netcon/mtclient/$<CONFIG>/Parallax Online.d3c" "$<TARGET_FILE_DIR:Descent3>/online"
|
||||
COMMENT "Copying HOG-files into Descent3 work dir"
|
||||
)
|
||||
|
||||
install(TARGETS Descent3 RUNTIME BUNDLE DESTINATION .)
|
||||
if(MSVC)
|
||||
install(FILES $<TARGET_PDB_FILE:Descent3> DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
|
73
USAGE.md
73
USAGE.md
@ -1,31 +1,74 @@
|
||||
# Descent 3 Open source usage instructions
|
||||
|
||||
**Important note**: This open source distribution of Descent 3 DOES NOT CONTAIN GAME ASSETS. Assets must be acquired separately from an official copy of the game, and copied as describe in the next section.
|
||||
**Important note**: This open source distribution of Descent 3 DOES NOT CONTAIN
|
||||
GAME ASSETS. Assets must be acquired separately from an official copy of the
|
||||
game, and copied as describe in the next section.
|
||||
|
||||
This is the first release of the Descent 3 open source engine, that should be considered a beta version. If you find a bug that has not been reported before, please open a new ticket it on our [online issue tracker](https://github.com/DescentDevelopers/Descent3/issues).
|
||||
This is the first release of the Descent 3 open source engine, that should be
|
||||
considered a beta version. If you find a bug that has not been reported before,
|
||||
please open a new ticket it on our [online issue tracker](https://github.com/DescentDevelopers/Descent3/issues).
|
||||
|
||||
1. Make sure that you have a copy of Descent 3. You can purchase a copy of
|
||||
Descent 3 from [GOG](https://www.gog.com/game/descent_3_expansion) or
|
||||
[Steam](https://store.steampowered.com/app/273590/Descent_3/).
|
||||
|
||||
1. Make sure that you have a copy of Descent 3. You can purchase a copy of Descent 3 from [GOG](https://www.gog.com/game/descent_3_expansion) or [Steam](https://store.steampowered.com/app/273590/Descent_3/).
|
||||
2. Install Descent 3.
|
||||
**Note for Steam users:** If you own Descent 3 on Steam, then it’s recommended that you install the Windows version of the game even if you’re running macOS or Linux, otherwise movies will not work due to [current lack of Ogv support](https://github.com/DescentDevelopers/Descent3/issues/240). You can use either [Steam Play](https://help.steampowered.com/en/faqs/view/08F7-5D56-9654-39AF) or [SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD#Cross-Platform_Installation) to install the Windows version of the game on macOS or Linux.
|
||||
3. If your version of Descent 3 is older than v1.4, then [update it to v1.4](http://descent3.com/downloads.php).
|
||||
4. Find the installation location of Descent 3. Using the Steam client, you can find it from the library page using the `Manage > Browse local files` context menu.
|
||||
**Note for Steam users:** If you own Descent 3 on Steam, then it’s recommended
|
||||
that you install the Windows version of the game even if you’re running macOS
|
||||
or Linux, otherwise movies will not work due to
|
||||
[current lack of OGV support](https://github.com/DescentDevelopers/Descent3/issues/240).
|
||||
You can use either [Steam Play](https://help.steampowered.com/en/faqs/view/08F7-5D56-9654-39AF)
|
||||
or [SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD#Cross-Platform_Installation)
|
||||
to install the Windows version of the game on macOS or Linux.
|
||||
|
||||
3. If your version of Descent 3 is older than v1.4, then
|
||||
[update it to v1.4](http://descent3.com/downloads.php).
|
||||
|
||||
4. Find the installation location of Descent 3. Using the Steam client, you can
|
||||
find it from the library page using the `Manage > Browse local files`
|
||||
context menu.
|
||||
|
||||
5. Create a new folder named `D3-open-source`.
|
||||
|
||||
6. Copy the following files from your installation of Descent 3 to `D3-open-source`:
|
||||
- All `.hog` files
|
||||
- The `missions` folder
|
||||
- _(Optional)_ All `.pld` files
|
||||
- _(Optional)_ The `movies` folder
|
||||
|
||||
7. Create the `custom/` folder in `D3-open-source`
|
||||
|
||||
8. Obtain new Descent 3 engine files:
|
||||
- If you want to use pre-built binaries, then download the latest [release](https://github.com/DescentDevelopers/Descent3/releases). For a more cutting-edge experience with the latest features, use the artifacts from the latest automated build. You can find the list of automated builds [here](https://github.com/DescentDevelopers/Descent3/actions/workflows/build.yml?query=branch%3Amain+event%3Apush).
|
||||
- If you want to build the engine files yourself, the follow the instructions in [BUILD.md](BUILD.md). Once you build the engine files, they’ll be put in `builds/<platform>/Descent3/<build-type>/`. For example, if you’re using Linux and you create a “Release” build, then the files will be located at `builds/linux/Descent3/Release`.
|
||||
9. Copy all of the new engine files into `D3-open-source` and overwrite any conflicts.
|
||||
- If you want to use pre-built binaries, then download the latest
|
||||
[release](https://github.com/DescentDevelopers/Descent3/releases). For a
|
||||
more cutting-edge experience with the latest features, use the artifacts
|
||||
from the latest automated build. You can find the list of automated
|
||||
builds [here](https://github.com/DescentDevelopers/Descent3/actions/workflows/build.yml?query=branch%3Amain+event%3Apush).
|
||||
- If you want to build the engine files yourself, the follow the
|
||||
instructions in [BUILD.md](BUILD.md). Once you build the engine files,
|
||||
they’ll be put in `builds/<platform>/<build-type>/`. For example, if
|
||||
you’re using Linux and you create a “Release” build, then the files will
|
||||
be located at `builds/linux/Release`.
|
||||
|
||||
9. Copy all the new engine files into `D3-open-source` and overwrite any
|
||||
conflicts.
|
||||
|
||||
10. Special notes:
|
||||
- D3 Open Source compiles level scripts in their own hogfiles. Make sure you copy and overwrite `d3-{platform}.hog`.
|
||||
- D3 Open Source compiles level scripts in their own hogfiles. Make sure
|
||||
you copy and overwrite `d3-{platform}.hog`.
|
||||
|
||||
11. Run the game:
|
||||
- On Windows, run `D3-open-source\Descent3.exe` from a command-line or double-click on the `Descent3` executable.
|
||||
- On Linux, `cd` to `D3-open-source` and run `./Descent3`. Wayland users may need to set environement variable `SDL_VIDEODRIVER=wayland` before launching the game.
|
||||
- On MacOS, the `.app` bundle is currently not signed, so your operating system will not let you run it by double-clicking it. To remediate that, open your terminal and `cd` to `D3-open-source`. Run `xattr -c ./Descent3.app` and then `chmod +x ./Descent3.app/Content/MacOS/Descent3`, then run the game using `./Descent3.app/Content/MacOS/Descent3`
|
||||
- On Windows, run `D3-open-source\Descent3.exe` from a command-line or
|
||||
double-click on the `Descent3` executable.
|
||||
- On Linux, `cd` to `D3-open-source` and run `./Descent3`. Wayland users
|
||||
may need to set environment variable `SDL_VIDEODRIVER=wayland` before
|
||||
launching the game.
|
||||
- On macOS, the `.app` bundle is currently not signed, so your operating
|
||||
system will not let you run it by double-clicking it. To remediate that,
|
||||
open your terminal and `cd` to `D3-open-source`. Run
|
||||
`xattr -c ./Descent3.app` and then
|
||||
`chmod +x ./Descent3.app/Content/MacOS/Descent3`, then run the game
|
||||
using `./Descent3.app/Content/MacOS/Descent3`
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
@ -33,7 +76,9 @@ This is the first release of the Descent 3 open source engine, that should be co
|
||||
Descent 3 Message(Error: Couldn't find the string table.)
|
||||
```
|
||||
|
||||
This error means that game data could not be found. Make sure you copied all game files to the `D3-open-source` folder, and that you're running the game from this same folder.
|
||||
This error means that game data could not be found. Make sure you copied all
|
||||
game files to the `D3-open-source` folder, and that you're running the game
|
||||
from this same folder.
|
||||
|
||||
## Command line options
|
||||
|
||||
|
@ -29,9 +29,13 @@ endif()
|
||||
include(HogMaker)
|
||||
MakeHog(
|
||||
TARGET Descent3_Online_TCP_IP_Hog
|
||||
OUTPUT "$<CONFIG>/Descent3 Online.d3c"
|
||||
OUTPUT "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Descent3 Online.d3c"
|
||||
INPUT_FILE "${CMAKE_SOURCE_DIR}/netcon/descent3onlineclient/d3online.d3c.txt"
|
||||
SEARCH_PATH "$<TARGET_FILE_DIR:Descent3_Online_TCP_IP>" "${CMAKE_SOURCE_DIR}/scripts/data/fullhog/"
|
||||
DEPENDS Descent3_Online_TCP_IP
|
||||
)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/Descent3 Online.d3c" DESTINATION ${CMAKE_INSTALL_DATADIR}/online)
|
||||
|
||||
install(
|
||||
FILES "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Descent3 Online.d3c"
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/online
|
||||
)
|
||||
|
@ -22,9 +22,13 @@ endif()
|
||||
include(HogMaker)
|
||||
MakeHog(
|
||||
TARGET Direct_TCP_IP_Hog
|
||||
OUTPUT "$<CONFIG>/Direct TCP~IP.d3c"
|
||||
OUTPUT "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Direct TCP~IP.d3c"
|
||||
INPUT_FILE "${CMAKE_SOURCE_DIR}/netcon/lanclient/TCP_IP.d3c.txt"
|
||||
SEARCH_PATH "$<TARGET_FILE_DIR:Direct_TCP_IP>" "${CMAKE_SOURCE_DIR}/scripts/data/fullhog/"
|
||||
DEPENDS Direct_TCP_IP
|
||||
)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/Direct TCP~IP.d3c" DESTINATION ${CMAKE_INSTALL_DATADIR}/online)
|
||||
|
||||
install(
|
||||
FILES "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Direct TCP~IP.d3c"
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/online
|
||||
)
|
||||
|
@ -32,10 +32,13 @@ endif()
|
||||
include(HogMaker)
|
||||
MakeHog(
|
||||
TARGET Parallax_Online_Hog
|
||||
OUTPUT "$<CONFIG>/Parallax Online.d3c"
|
||||
OUTPUT "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Parallax Online.d3c"
|
||||
INPUT_FILE "${CMAKE_SOURCE_DIR}/netcon/mtclient/Parallax_Online.d3c.txt"
|
||||
SEARCH_PATH "$<TARGET_FILE_DIR:Parallax_Online>" "${CMAKE_SOURCE_DIR}/scripts/data/fullhog/"
|
||||
DEPENDS Parallax_Online
|
||||
)
|
||||
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/Parallax Online.d3c" DESTINATION ${CMAKE_INSTALL_DATADIR}/online)
|
||||
install(
|
||||
FILES "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/online/Parallax Online.d3c"
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/online
|
||||
)
|
||||
|
@ -93,12 +93,16 @@ endforeach()
|
||||
include(HogMaker)
|
||||
MakeHog(
|
||||
TARGET HogFull
|
||||
OUTPUT "$<CONFIG>/d3-${HOG_NAME}.hog"
|
||||
OUTPUT "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/d3-${HOG_NAME}.hog"
|
||||
INPUT_FILE "${CMAKE_SOURCE_DIR}/scripts/data/fullhog/d3-${HOG_NAME}-fullhog.txt"
|
||||
SEARCH_PATH "$<TARGET_FILE_DIR:AIGame>"
|
||||
DEPENDS ${SCRIPTS}
|
||||
)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/d3-${HOG_NAME}.hog" DESTINATION ${CMAKE_INSTALL_DATADIR})
|
||||
|
||||
install(
|
||||
FILES "${D3_GENERATED_FILES_OUTPUT_DIRECTORY}/d3-${HOG_NAME}.hog"
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}
|
||||
)
|
||||
|
||||
# FIXME: there may be only one d3-linux.hog, need deal with demo somehow.
|
||||
# add_custom_target(HogLinuxDemo
|
||||
|
Loading…
Reference in New Issue
Block a user