{"id":26123594,"url":"https://github.com/ncine/ncline","last_synced_at":"2025-06-26T16:37:17.829Z","repository":{"id":92565297,"uuid":"208925965","full_name":"nCine/ncline","owner":"nCine","description":"The nCine command line tool","archived":false,"fork":false,"pushed_at":"2024-12-12T01:02:49.000Z","size":114,"stargazers_count":12,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-13T15:13:51.487Z","etag":null,"topics":["cpp11","game-development","gamedev","linux","macos","mingw","ncine","windows"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nCine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-17T00:48:49.000Z","updated_at":"2024-12-16T23:17:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"7cccd886-59da-4695-83a9-4c5a4628a1a5","html_url":"https://github.com/nCine/ncline","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nCine/ncline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nCine%2Fncline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nCine%2Fncline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nCine%2Fncline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nCine%2Fncline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nCine","download_url":"https://codeload.github.com/nCine/ncline/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nCine%2Fncline/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262103273,"owners_count":23259424,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp11","game-development","gamedev","linux","macos","mingw","ncine","windows"],"created_at":"2025-03-10T15:53:42.043Z","updated_at":"2025-06-26T16:37:17.807Z","avatar_url":"https://github.com/nCine.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Linux](https://github.com/nCine/ncline/workflows/Linux/badge.svg)](https://github.com/nCine/ncline/actions?workflow=Linux)\n[![macOS](https://github.com/nCine/ncline/workflows/macOS/badge.svg)](https://github.com/nCine/ncline/actions?workflow=macOS)\n[![Windows](https://github.com/nCine/ncline/workflows/Windows/badge.svg)](https://github.com/nCine/ncline/actions?workflow=Windows)\n[![MinGW](https://github.com/nCine/ncline/workflows/MinGW/badge.svg)](https://github.com/nCine/ncline/actions?workflow=MinGW)\n[![CodeQL](https://github.com/nCine/ncline/workflows/CodeQL/badge.svg)](https://github.com/nCine/ncline/actions?workflow=CodeQL)\n\n# ncline\nncline is the nCine command line tool.  \nA tool to automate the download, configuration and compilation processes for the engine and its accompanying projects.  \nFor additional information: https://ncine.github.io\n\n## Manual\n\n**ncline** is made of five different commands: `set`, `download`, `conf`, `build` and `dist`.\n\nWhen not using the `set` command you have access to a `-dry-run` option in order to see which commands would be executed on the command line without actually executing them.\nThis option is very useful to debug an issue or to learn how to perform the actions manually.\n\nAdditionally you can invoke **ncline** with the `--help` or `--version` options to respectively print a man page or the version string.\n\n### Set command\n\nThe `set` command changes the global settings for the tool. They will affect all other commands and are stored in the `ncline.ini` file in the working directory.\n\nIn order to change a setting you have to invoke the tool with the `set` command and an option, for example:\n\n\tncline set -game ncPong\n\nIf you want to enable or disable the colored terminal output you can use `-colors` or `-no-colors`.\nIf left unspecified the default mode would be `-colors`.\n\n#### nCine section\n\nThe first option you can set is the target platform. If left uspecified it is assumed to be the current host platform.\nYou can change it with the `-android` or `-emscripten` option in order to cross-compile for Android or Emscripten.\nTo revert it to the default use the `-desktop` option.\n\nOn Linux and MinGW you can use `-gcc` and `-clang` to specify which compiler to use during the CMake configuration process.\nIf left unspecified then CMake is left alone to pick a suitable compiler.\nOn the other supported platforms the compilers are predetermined and can't be changed.\n\nIf you want to specify a branch other than `master` or a particular tag when downloading the engine source using Git you can use the `-branch \u003cname\u003e` option:\n\n\tncline set -branch 2020.05\n\nThis specific branch or tag will also be used when downloading a game project. This will happen to ensure that the project works with that engine version.\n\nIn order to specify which game project will be the target of the remaining commands you can use the `-game \u003cname\u003e` option:\n\n\tncline set -game ncPong\n\nIf you specify an official nCine project name you will also be able to download it.\n\nYou can specify the directory that will be passed as `nCine_DIR` to game projects using the `-ncine-dir \u003cpath\u003e` option:\n\n\tncline set -ncine-dir /path/to/nCine-build\n\nThe option is automatically set after each successful compilation or download of the engine.\n\nIf you need to specify additional CMake arguments when configuring the engine compilation you can use the `-cmake-args \u003cargs\u003e` option:\n\n\tncline set -cmake-args \"-D NCINE_BUILD_TESTS=OFF\"\n\nIf you need to specify additional CMake arguments when configuring the game compilation you can use the `-game-cmake-args \u003cargs\u003e` option:\n\n\tncline set -game-cmake-args \"-D NCPROJECT_DATA_DIR=/path/to/data-directory\"\n\n#### CMake section\n\nWith the `-ninja` and `-no-ninja` options you can choose whether to choose Ninja as a CMake generator or not, providing it is available.\nThis option works together with the `-ninja-exe \u003cexecutable\u003e` option to specify a particular file as the Ninja executable.\nIf left unspecified the default would be `-no-ninja`.\n\nOn Windows you can pass the `-mingw` and `-no-mingw` options to choose whether to build for MinGW/MSYS or not.\nIf left unspecified the default would be `-no-mingw`.\n\nOn Windows you can also pass the `-vs2017`, `-vs2019`, or `-vs2022` options to build (or download artifacts) for a specific Visual Studio version.\nIf left unspecified the default would be `-vs2022`.\n\nOn macOS you can pass the `-macos12` or `-macos14` options to build (or download artifacts) for a specific macOS version.\nIf left unspecified the default would be `-macos12`.\n\nIf you need to specify a `CMAKE_PREFIX_PATH` when configuring the engine compilation you can use the `-prefix-path \u003cpath\u003e` option.\nThe option is automatically set after each successful compilation or download of the libraries.\n\n#### Android section\n\nWhen cross-compiling for Android you can specify some options to fine-tune the process.\n\nIn order to choose which architecture to support you can pass one of the three options: `-armeabi-v7a`, `-arm64-v8a` or `x86_64`.\nIf left unspecified the default would be `-arm64-v8a`.\n\nFor the cross-compilation to be successful you also need to specify the Android SDK and NDK directories with the `-sdk-dir \u003cpath\u003e` and `-ndk-dir \u003cpath\u003e` options.\n\nFor the game projects to be able to assemble an APK you need to specify the Gradle directory with the `-gradle-dir \u003cpath\u003e` option.\n\n#### Executables section\n\nYou can specify the path to some important executables used during the configuration and building process like: Git, CMake, Ninja, emcmake and Doxygen.\n\nThe relative options are: `-git-exe \u003cexecutable\u003e`, `-cmake-exe \u003cexecutable\u003e`, `-ninja-exe \u003cexecutable\u003e`, `-emcmake-exe \u003cexecutable\u003e` and `-doxygen-exe \u003cexecutable\u003e`.\n\nOn Windows **ncline** will search for Git and CMake in the installed programs while on macOS it will look for CMake among the installed applications.\n\n### Download command\n\nThe `download` command will download the source code from GitHub.\n\nIt has three targets: `libs`, `engine` and `game`.\n\nYou can invoke it like this:\n\n\tncline download engine\n\nTo checkout a specific branch after downloading a source repository you can use the `set -branch` option.\n\nIf you set the Android platform with `set -android` the `libs` target will download the building script sources for the Android libraries.\n\nBefore using the `game` target you need to set the game name with `set -game \u003cname\u003e` and it has to be one of the official nCine projects.\n\nThe `download` command also accepts an `-artifact` option to download a binary archive from the C.I. artifacts repositories instead of sources.\n\nWhich artifact is going to be downloaded depends on the host platform and on additional `set` options like: `-desktop|-android|-emscripten`, `-gcc|-clang`, `-mingw|-no-mingw`, `-vs2017|-vs2019`, `-armeabi-v7a|-arm64-v8a|x86_64` or `-branch`.\n\n### Conf command\n\nThe `conf` command will run CMake to configure the project using a generator to write the input files for a native build system.\n\nJust like the `download` command it has three targets: `libs`, `engine` and `game`.\n\nIt expects the source code repository to be already present, that is why you would usually invoke a `conf` command after a `download` one.\n\nIf the generator is a multi-configuration one, like Visual Studio, then you should invoke the command like this:\n\n\tncline conf libs\n\nIn all other cases the generator would support only a single build type at configuration time, meaning that you need to invoke it like this:\n\n\tncline conf libs release\n\nThere is an exception, when the target is Android you will be able to specify the build type for the Android libraries at configuration time even when using the Visual Studio generator.\nThis also means you will be able to compile the Android and the native libraries using two different build types.\n\nThe `conf` command is affected by many `set` options, like `-desktop|-android|-emscripten`, `-gcc|-clang`, `-mingw|-no-mingw` or `-vs2017|-vs2019`, `-armeabi-v7a|-arm64-v8a|x86_64`, `-ncine-dir \u003cpath\u003e`, `-cmake-args \u003cargs\u003e`, `-prefix-path \u003cpath\u003e` or `-game`.\nIt will also be affected by the executables section of the settings.\n\n### Build command\n\nThe `build` command will run CMake in build mode in order to compile a project.\n\nIt supports the same three `conf` targets: `libs`, `engine` and `game`.\n\nIt expects a configured build directory to be already present, that is why you would usually invoke a `build` command after a `conf` one.\n\nIf the generator is a multi-configuration one, like Visual Studio, this is the time to specify a build type:\n\n\tncline build engine release\n\nIn all other cases the build type is already specified in the configured build directory and you only need to invoke it like this:\n\n\tncline build engine\n\n### Dist command\n\nThe `dist` command is independent from the `conf` and `build` ones and will try to build a package with CPack.\n\nIt supports only two targets: `engine` and `game`.\n\nIt expects the source code repository to already be present, that is why you would usually invoke a `dist` command after a `download` one.\n\nIt compiles with the release build type and for this reason it is invoked like this:\n\n\tncine dist game\n\nIt is only affected by the executables section of the settings and by the `-game` option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncine%2Fncline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fncine%2Fncline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fncine%2Fncline/lists"}