CLI tool for one-line installation of C++/CMake projects.

Overview

cmakip

When working on virtual environments, Python projects can be installed with a single command invocation, for example pip install --no-deps . . Instead for CMake/C++ projects it is necessary to manually run mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=... .

cmakip is a command line tool to simplify this step, i.e. the compilation and installation of C++/CMake projects when working on environments such as conda environments or Python's virtual environments, similarly to what pip permits to do with Python projects.

Installation

First of all, make sure that you are in a conda environment or a Python virtual environment, then you can install cmakip as:

pip install --no-deps git+https://github.com/ami-iit/cmakip"

Usage

Installation from a directory

cmakip can permit to quickly install a project in a directory, for example:

cd ~
git clone https://github.com/fmtlib/fmt
cd fmt
cmakip install .

This automatically creates a build_cmakip directory in the source folder and then installs it in the appropriate location:

Operating System Environment Type CMAKE_INSTALL_PREFIX
Linux&macOS Conda ${CONDA_PREFIX}
Windows Conda ${CONDA_PREFIX}\Library
Linux&macOS Python venv ${VIRTUAL_ENV}
Windows Python venv Not Supported

A project installed like that can be uninstalled like:

cd ~/fmt
cmakip uninstall .

Installation from a repo

cmakip can also be used to install CMake libraries from a repo:

cmake install git+https://github.com/fmtlib/fmt

This automatically clone the repo in ${CONDA_PREFIX}\src or ${VIRTUAL_ENV}\src, and then installs it.

A library installed like this can be uninstalled simply specifying the repo name:

cmakip uninstall fmt

FAQs

Does cmakip resolve dependencies?

No. In a sense, it is kind of equivalent to pip install --no-deps.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

BSD-3-Clause

You might also like...
[WIP]An ani-cli like cli tool for movies and webseries

mov-cli A cli to browse and watch movies. Installation This project is a work in progress. However, you can try it out python git clone https://github

Unofficial Open Corporates CLI: OpenCorporates is a website that shares data on corporations under the copyleft Open Database License. This is an unofficial open corporates python command line tool.
Unofficial Open Corporates CLI: OpenCorporates is a website that shares data on corporations under the copyleft Open Database License. This is an unofficial open corporates python command line tool.

Unofficial Open Corporates CLI OpenCorporates is a website that shares data on corporations under the copyleft Open Database License. This is an unoff

tox-server is a command line tool which runs tox in a loop and calls it with commands from a remote CLI.

Tox Server tox-server is a command line tool which runs tox in a loop and calls it with commands from a remote CLI. It responds to commands via ZeroMQ

Notion-cli-list-manager - A simple command-line tool for managing Notion databases

A simple command-line tool for managing Notion List databases. ✨

Spotify Offline is a command line tool that allows one to download Spotify playlists in MP3 format.

Spotify Offline v0.0.2 listen to your favorite spotify songs, offline Overview Spotify Offline (spotifyoffline) is a command line tool that allows one

A CLI for creating styled-components for React projects quickly

new-component Ian Cleary (iancleary) Description Welcome! This is a CLI for creating styled-components for React projects quickly. Note: I've rewrote

Python-Stock-Info-CLI: Get stock info through CLI by passing stock ticker.
Python-Stock-Info-CLI: Get stock info through CLI by passing stock ticker.

Python-Stock-Info-CLI Get stock info through CLI by passing stock ticker. Installation Use the following command to install the required modules at on

Yts-cli-streamer - A CLI movie streaming client which works on yts.mx API written in python
Yts-cli-streamer - A CLI movie streaming client which works on yts.mx API written in python

YTSP It is a CLI movie streaming client which works on yts.mx API written in pyt

Comments
  • Support installing multiple projects specified in a text file

    Support installing multiple projects specified in a text file

    pip supports installing projects from a requirements.txt file (see https://pip.pypa.io/en/stable/reference/requirements-file-format/). To quickly install multiple repos, it could make sense to support something similar in cmakip, for example support:

    cmakip install -r cmake_repos_to_install.txt
    

    where cmake_repos_to_install.txt is:

    git+https://github.com/fmtlib/[email protected]
    git+https://github.com/gabime/[email protected]
    git+https://gitlab.com/libeigen/[email protected]
    
    opened by traversaro 1
  • Permit to specify an automatic install prefix different from Conda or virtualenv prefixes

    Permit to specify an automatic install prefix different from Conda or virtualenv prefixes

    At the moment, cmakip only permits to automatically install projects when a Conda or virtualenv prefix is active. In the AMI lab (https://ami.iit.it/) a common practice widespread among the members is to have an instance of the https://github.com/robotology/robotology-superbuild "active" in the system, and install CMake project in the install directory of the "activated" robotology-superbuild. Probably it could make sense to support such a workflow.

    At the moment I can think of two ways of implement this:

      1. Make cmakip aware of the robotology-superbuild in particular, checking if ROBOTOLOGY_SUPERBUILD_INSTALL_PREFIX is defined
      1. Define a new environment variable observed by cmakip, called CMAKIP_INSTALL_PREFIX or similar, and define it in robotology-superbuild's setup.sh scripts.

    I like option 2. to decouple cmakip and robotology-superbuild .

    opened by traversaro 0
  • Permit to pass CMake options to cmakip

    Permit to pass CMake options to cmakip

    At the momement it is not possible to easily pass CMake option to the build created by cmakip. Ideally we would like to be able to do something like that:

    cmake install git+https://github.com/fmtlib/fmt -DFMT_MODULE:BOOL=ON
    
    opened by traversaro 0
Releases(v0.1.0)
Owner
Artificial and Mechanical Intelligence
Artificial and Mechanical Intelligence
Wordle - Wordle solver with python

wordle what is wordle? https://www.powerlanguage.co.uk/wordle/ preparing $ pip i

shidocchi 0 Jan 24, 2022
Trans is a dependency-free CLI for Google Translate

Trans is a dependency-free CLI for Google Translate

11 Jan 04, 2022
🖥️ A cross-platform modern shell.

Ergonomica WARNING: master on this repository is not the same as a stable release! Currently, this software is purely experimental, as I am cleaning i

813 Dec 27, 2022
A curated list of awesome things related to Textual

Awesome Textual | A curated list of awesome things related to Textual. Textual is a TUI (Text User Interface) framework for Python inspired by modern

Marcelo Trylesinski 5 May 08, 2022
(BionicLambda Universal SHell) A simple shell made in Python. Docs and possible C port incoming.

blush 😳 (BionicLambda Universal SHell) A simple shell made in Python. Docs and possible C port incoming. Note: The Linux executables were made on Ubu

3 Jun 30, 2021
A command line connect 4 game against a minimax agent.

A command line connect 4 game against a minimax agent.

1 Oct 17, 2021
Command Line Based Todo Script

Todo-CLI Features Full-Fledged Command Line Based Todo List with the following features planned: Interactive Interface OS Notifications Save and Remov

DSC IIEST 5 Nov 17, 2021
doq (python docstring generator) extension for coc.nvim

coc-pydocstring doq (python docstring generator) extension for coc.nvim Install CocInstall: :CocInstall coc-pydocstring vim-plug: Plug 'yaegassy/coc-p

yaegassy 27 Jan 04, 2023
CLI utility for updating the EVE Online static data export in a postgres database

EVE SDE Postgres updater CLI utility for updating the EVE Online static data export postgres database. This has been tested with the Fuzzwork postgres

Markus Juopperi 1 Oct 29, 2021
A simple script that outputs the current date on the user interface/terminal.

Py-Date A simple script that outputs the current date on the user interface/terminal. How to Run Open your terminal and cd into the folder containi

Arinzechukwu Okoye 1 Jan 13, 2022
spid-sp-test is a SAML2 SPID/CIE Service Provider validation tool that can be executed from the command line.

spid-sp-test spid-sp-test is a SAML2 SPID/CIE Service Provider validation tool that can be executed from the command line. This tool was born by separ

Developers Italia 30 Nov 08, 2022
touch command for Windows

Touch touch command for Windows Setup: Clone the repository git clone https://github.com/g-paras/touch.git cd touch Install touch module python setup.

Paras Gupta 5 Jan 04, 2022
CLI tool to develop StarkNet projects written in Cairo

⛵ Nile Navigate your StarkNet projects written in Cairo. Installation pip install cairo-nile Usage Install Cairo Use nile to install a given version o

Martín Triay 305 Dec 30, 2022
Colab-xterm allows you to open a terminal in a cell

colab-xterm Colab-xterm allows you to open a terminal in a cell. Usage Install package and load the extension !pip install git+https://github.com/popc

InfuseAI 194 Dec 29, 2022
PyWordle: A Python-made wordle manual solver

PyWordle: A Python-made wordle manual solver How to use it Start the program with python3 pywordlesolver.py. How it works The program has a simple 5-l

Federico Torrielli 5 Nov 24, 2022
Python CLI for accessing CSCI320 PDM Database

p320_14 Python CLI for accessing CSCI320 PDM Database Authors: Aidan Mellin Dan Skigen Jacob Auger Kyle Baptiste Before running the application for th

Aidan Mellin 1 Nov 23, 2021
Rdwcli - Car list cli app with python

Rdwcli - Car list cli app with python

Arie Twigt 1 Feb 02, 2022
A cli tool , which shows you all the next possible words you can guess from in the game of Wordle.

wordle-helper A cli tool , which shows you all the next possible words you can guess from the Game Wordle. This repo has the code discussed in the You

1 Jan 17, 2022
Automaton - python script to execute bash command based on changes in size of a file.

automaton python script to execute given command = everytime size of a given file changes,hence everytime a file is modified.(almost) download automa

asrar bhat 1 Jan 03, 2022
Chameleon is yet another PowerShell obfuscation tool designed to bypass AMSI and commercial antivirus solutions.

Chameleon is yet another PowerShell obfuscation tool designed to bypass AMSI and commercial antivirus solutions. The tool has been developed as a Python port of the Chimera project, by tokioneon_.

332 Dec 26, 2022