mirror of
https://bitbucket.org/CPMADevs/cnq3
synced 2024-11-14 00:11:01 +00:00
4.4 KiB
4.4 KiB
Building CNQ3
Toolchains
There are 3 supported build toolchains:
- Visual C++ on Windows x64 and x86
- GCC or Clang on Linux x64
- Clang or GCC on FreeBSD x64
Directories
Directory | Contains |
---|---|
makefiles | premake script and pre-generated Visual C++ and GNU makefiles |
.build | intermediate build files |
.bin | final executables (and symbol database files on Windows) |
Building on Windows with Visual C++ 2013 or later
Requirements
- The %QUAKE3DIR% environment variable must be defined to the absolute path to copy the .exe and .pdb files to
- NASM.exe is in your path for building the client
- One of the following is true:
- The %FXCPATH% environment variable contains the full path to fxc.exe
- The June 2010 DirectX SDK is installed
Options
- The %CPMADIR% environment variable must be defined to the name of the mod directory for launching through the debugger
Build steps
- Open makefiles\windows_vs2013\cnq3.sln
- Build
Notes
- You don't need to set environment variables globally
- Instead, we recomment you set them for the Visual Studio process only
Here's an example batch script for opening the Visual Studio solution:
cd cnq3\makefiles\windows_vs2013
set QUAKE3DIR=G:\CPMA_tests
set CPMADIR=cpma_dev
set FXCPATH=C:\Program Files (x86)\Windows Kits\8.1\bin\x64\fxc.exe
cnq3.sln
With this set-up, you can press F5 and run the engine through the Visual C++ debugger on the right q3 install and right mod folder immediately.
Building on Linux / FreeBSD with GCC
Requirements
Name | Server | Client | Debian package | FreeBSD package |
---|---|---|---|---|
NASM | X | X | nasm | nasm |
SDL 2 | X | libsdl2-dev | sdl2 |
On FreeBSD, we link against libexecinfo for the backtrace functions. We thus require FreeBSD 10.0 or later.
Options
- The $(QUAKE3DIR) environment variable can define the absolute path to copy the executables to
Build steps
- Navigate to the root of the repository
- Run
make [config=debug|release] all|client|server
to build on Linux
For FreeBSD, usegmake
instead ofmake
Notes
- To create the QUAKE3DIR variable in the build shell, you can use
export QUAKE3DIR=~/games/q3
- To delete the variable from the build shell, you can use
unset QUAKE3DIR
- On FreeBSD, Clang is now the default compiler
- For most Linux distros, GCC is still the default compiler
- To force building with Clang, you can use
CC=clang CXX=clang++
as make/gmake arguments - To force building with GCC, you can use
CC=gcc CXX=g++
as make/gmake arguments - You don't have to specify $(CPP), it's not used by any of the makefiles
Environment variables
There are 3 environment variables used for compiling and debugging:
Env. Var. | Meaning | Example |
---|---|---|
QUAKE3DIR | absolute directory path | C:\Games\Q3 |
CPMADIR | mod folder name | cpma |
FXCPATH | full fxc.exe file path | C:\Program Files (x86)\Windows Kits\8.1\bin\x64\fxc.exe |
Env. Var. | Windows | Linux / FreeBSD |
---|---|---|
QUAKE3DIR | required for building | optional for building |
CPMADIR | required for debugging | unused |
FXCPATH | required for building(1) | unused |
- FXCPATH is optional if you have the June 2010 DirectX SDK installed.
Building with other compilers
While it's not officially supported, you can modify the premake Lua script and run premake on it to generate new makefiles for your own needs.
Bonus: Building SDL 2 from source on Linux
- Download the sources of the latest stable release
- Extract to sdl-src
- Create sdl-build next to sdl-src (it has to be out-of-tree)
- Navigate to the sdl-build directory with
cd
- Run
../sdl-src/configure
- Run
make
- As superuser, run
make install
(orsudo make install
) - Run
ldconfig
to update the library paths