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
3DigitDev 29 Jan 17, 2022
💥 Share files easily over your local network from the terminal!

Fileshare 📨 Share files easily over your local network from the terminal! 📨 Installation # clone the repo $ git clone https://github.com/dopevog/fil

Dopevog 11 Sep 10, 2021
Textual: a TUI (Text User Interface) framework for Python inspired by modern web development

Textual Textual is a TUI (Text User Interface) framework for Python inspired by

17.1k Jan 04, 2023
Simple tool, to update linux kernel on ubuntu

Kerbswap Simple tool, to update linux kernel on ubuntu Information At the moment, this tool only supports "Ubuntu" distributions, but will be expanded

dword 1 Oct 31, 2021
Dart Version Manager CLI implemented with Python and Typer.

Dart Version Manager Dart Version Manager CLI implemented with Python and Typer Usage: $ dvm [OPTIONS] COMMAND [ARGS]... Options: --install-completion

EducUp 6 Jun 26, 2022
Simple CLI prompt for easy I/O with OpenAI's API

openai-cli-prompt Simple CLI prompt for easy I/O with OpenAI's API Quickstart Create a .env file with: OPENAI_API_KEY=Your OpenAI API Key Configure

Erik Nomitch 1 Oct 12, 2021
A communist shell written in Python

kash A communist shell written in Python It doesn't support escapes, quotes, comment lines, |, &&, , or similar yet. If you need help, get it from

Çınar Yılmaz 1 Dec 10, 2021
Enlighten Progress Bar is a console progress bar library for Python.

Overview Enlighten Progress Bar is a console progress bar library for Python. The main advantage of Enlighten is it allows writing to stdout and stder

Rockhopper Technologies 265 Dec 28, 2022
Because sometimes you need to do it live

doitlive doitlive is a tool for live presentations in the terminal. It reads a file of shell commands and replays the commands in a fake terminal sess

Steven Loria 3.2k Jan 09, 2023
This project contains the ClonedPerson dataset and code described in our paper "Cloning Outfits from Real-World Images to 3D Characters for Generalizable Person Re-Identification".

ClonedPerson This is the official repository for the ClonedPerson project, which contains the ClonedPerson dataset and code described in our paper "Cl

Yanan Wang 55 Dec 27, 2022
Wordle breaker: A CLI tool to help you solve Wordle

Wordle Breaker A CLI tool to help you solve Wordle I decided to code a solution

Alex 4 Apr 27, 2022
A helper program to play wordle

A helper program to play wordle

1 Jan 22, 2022
Python Processing Tool for Vasp Ipnut/Output

PivotPy A Python Processing Tool for Vasp Input/Output. A CLI is available in Powershell, see Vasp2Visual. stylea{text-decoration: none !important;c

Abdul Saboor 5 Aug 16, 2022
Get Air Quality Index for your city/country 😷

Air Quality Index CLI Get Air Quality index for your City. Installation $ pip install air-quality-cli Contents Air Quality Index CLI Installation Cont

Yankee 40 Oct 21, 2022
Browse Hacker News like a haxor: A Hacker News command line interface (CLI).

haxor-news Coworker who sees me looking at something in a browser: "Glad you're not busy; I need you to do this, this, this..." Coworker who sees me s

Donne Martin 3.8k Jan 07, 2023
A command line interface to interact with the Hypixel api allowing the user to get stats, leaderboards, etc

HyConsole is a way to get data on players and leaderboards from the Hypixel Minecraft server from the command line. Keep in mind I have no a

1 Feb 14, 2022
ddgr is a cmdline utility to search DuckDuckGo (html version) from the terminal

ddgr is a cmdline utility to search DuckDuckGo (html version) from the terminal. While googler is extremely popular among cmdline users, in many forums the need of a similar utility for privacy-aware

Piña Colada 2.5k Dec 25, 2022
The most comprehensive, exhaustive, parameterized command-line wordle solver.

Wordle Solver The most comprehensive, exhaustive, parameterized command-line wordle solver. Wordle is a real

Debarghya Das 27 Nov 21, 2022
Write Django management command using the click CLI library

Django Click Project information: Automated code metrics: django-click is a library to easily write Django management commands using the click command

Jonathan Stoppani 215 Dec 19, 2022
MiShell is a multi-platform, multi-architecture project based on the first version (MiShell32)

MiShell is a multi-platform, multi-architecture project based on the first version (MiShell32), which offers super super small reverse shell payloads great for injection in buffer overflow vulnerabil

Kamyar Hatamnezhad 0 Oct 27, 2022