Directory Structure
fips creates project directories and a few special directories on the same level as the fips directory itself.
┣━━ fips/
┣━━ fips-build/
┣━━ fips-deploy/
┣━━ fips-sdks/
┣━━ project-1/
┣━━ project-2/
┣━━ .../
The fips-build directory
The fips-build directory contains the generated cmake build files, separated in subdirectories by project name and config name. The content of fips-build is created with the ‘fips gen’ command (or on the fly during ‘fips build’ or ‘fips make’):
┗━━ fips-build/
┣━━ project-1/
┃ ┣━━ osx-xcode-debug/
┃ ┃ ┣━━ oryol.xcodeproj/
┃ ┃ ┗━━ ...
┃ ┗━━ emsc-make-release/
┃ ┣━━ Makefile
┃ ┗━━ ...
┗━━ project-2/
┗━━ emsc-make-release/
┣━━ Makefile
┗━━ ...
The fips-deploy directory
The fips-deploy directory contains the built executable files, also separated in subdirectories by project and config name. The content of the fips-deploy directory is created during the ‘fips build’ or ‘fips make’ commands:
┗━━ fips-deploy/
┣━━ project-1/
┃ ┣━━ osx-xcode-debug/
┃ ┃ ┣━━ app-1.app
┃ ┃ ┣━━ app-2.app
┃ ┃ ┗━━ ...
┃ ┗━━ emsc-make-release/
┃ ┣━━ app-1.html
┃ ┣━━ app-2.html
┃ ┗━━ ...
┗━━ project-2/
┗━━ emsc-make-release/
┣━━ app-1.html
┗━━ ...
Both the fips-build and fips-deploy directories contain only generated files, it is not dangerous to completely delete these directories.
The fips command ‘fips clean [config]’ deletes the generated files for all configs, the active config, or a named config.
The fips-sdks directory
The fips-sdks directory contains the platform SDK files installed with:
> fips setup emscripten
> fips setup android
The fips-sdks directory structure currently looks like this (details may change in the future):
┗━━ fips-sdks/
┗━━ android
┗━━ emsdk
Special fips files
A project needs at least a fips.yml file to be recognized as a fips project. Most projects have additional fips-specific files and directories:
┗━━ project-1/
┣━━ fips.yml
┣━━ fips
┣━━ fips.cmd
┣━━ fips-files/
┃ ┣━━ include.cmake
┃ ┣━━ verbs/
┃ ┣━━ generators/
┃ ┣━━ configs/
┃ ┗━━ toolchains/
┣━━ .fips-settings.yml
┣━━ .fips-imports.cmake
┗━━ .fips-gen.py
All files except fips.yml are optional, all hidden files (starting with a ‘.’) are maintained by fips and should not be under version control.
Here’s a description of what each file means:
- fips.yml: contains the imports, exports and policy options of the project
- fips: proxy python script to be able to run fips commands from within the project directory
- fips.cmd: Windows batch file to call the ‘fips’ python script
- fips-files/include.cmake: if present, this cmake file is included by other fips projects which depend on this project, this can be used to define global cmake attributes for projects which export multiple modules
- fips-files/verbs/: if present, this directory contains python scripts which add additional commands (verbs) to fips
- fips-files/generators/: if present, this directory contains python code-generator scripts which are called during the build process
- fips-files/configs/: if present, the fips-files/configs directory contains additional fips configs, the config names must not collide with the fips standard config names (e.g. osx-xcode-debug), so it is a good idea to include the project name in those custom configs
- fips-files/toolchains: if this directory exists it should contain cmake toolchain files, which can either override the standard toolchain files in the fips-directory, or can be completely new toolchain files for new platforms. Toolchain files can be defined in build-configs using the ‘cmake-toolchain’ attribute. Toolchain files will be searched in the following order: first in the current project, then in imported projects, and finally in the fips directory itself.
- .fips-settings.yml: hidden file with project-specific fips settings generated by ‘fips set [key] [value]’ or ‘fips unset [key]’
- .fips-imports.cmake: generated cmake file which contains all imports of the project, the .fips-imports.cmake file is created during ‘fips gen’ and other fips commands which implicitly do a cmake run (like ‘fips build’ or ‘fips make’)
- .fips-gen.py: a generated python helper script for code generation during the build process