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
A command line connect 4 game against a minimax agent.

A command line connect 4 game against a minimax agent.

1 Oct 17, 2021
Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections.

code-connect Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections. Motivation VS Code supports opening

Christian Volkmann 56 Nov 19, 2022
A Hikari command handler for people who love ducks.

A Hikari command handler for people who love ducks.

Jeremiah 2 Oct 09, 2022
Booky - A command line utility for bookmarking files on your terminal!

Booky A command line utility for bookmarking files for quick access With it you can: Bookmark and delete your (aliases of) files at demand Launch them

Pran 1 Sep 11, 2022
gcp-doctor - Diagnostics for Google Cloud Platform

gcp-doctor is a command-line diagnostics tool for GCP customers. It finds and helps to fix common issues in Google Cloud Platform projects. It is used to test projects against a wide range of best-pr

Google Cloud Platform 185 Dec 20, 2022
Navigate torrents in CLI with Mariner.

Navigate torrents in CLI with Mariner. It offers a simple interface for streamlined experience. No more annoying ads and pop-up windows.

2 Oct 20, 2021
Shellcode runner to execute malicious payload and bypass AV

buffshark-shellcode-runner Python Shellcode Runner to execute malicious payload and bypass AV This script utilizes mmap(for linux) and win api wrapper

Momo Lenard 9 Dec 29, 2022
Command-line tool for looking up colors and palettes.

Colorpedia Colorpedia is a command-line tool for looking up colors, shades and palettes. Supported color models: HEX, RGB, HSL, HSV, CMYK. Requirement

Joohwan Oh 282 Dec 27, 2022
Create animated ASCII-art for the command line almost instantly!

clippy Create and play colored 🟥 🟩 🟦 or colorless ⬛️ ⬜️ animated, or static, ASCII-art in the command line! clippy can help if you are wanting to;

Connor 10 Jun 26, 2022
A simple command line dumper written in Python 3.

A simple command line dumper written in Python 3.

ImFatF1sh 1 Oct 10, 2021
A **CLI** folder organizer written in Python.

Fsorter Introduction A CLI folder organizer written in Python. Dependencies Before installing, install the following dependencies: Ubuntu/Debain Based

1 Nov 17, 2021
CLI to show end-of-life dates for tools and technologies.

Python 3.9+ interface to endoflife.date to show end-of-life dates for tools and technologies.

Hugo van Kemenade 32 Jan 06, 2023
A command line tool to publish ads on ebay-kleinanzeigen.de

kleinanzeigen-bot Feedback and high-quality pull requests are highly welcome! About Installation Usage Development Notes License About kleinanzeigen-b

83 Dec 26, 2022
🐾 Get the nftables counters easier to read

nft-stats Get the nftables counters easier to read It kind of hard to read the output of nft list ruleset so there is a small program parcising the ou

7 Oct 08, 2022
Squirrel - A cli program to track writing progress

Squirrel Very much a WIP project squirrel is a command line program that tracks you writing progress and gives you useful information and cute and pic

3 Mar 23, 2022
A CLI Password Manager made using Python and Postgresql database.

ManageMyPasswords (CLI Edition) A CLI Password Manager made using Python and Postgresql database. Quick Start Guide First Clone The Project git clone

Imira Randeniya 1 Sep 11, 2022
Bringing emacs' greatest feature to neovim - Tetris!

nvim-tetris Bringing emacs' greatest feature to neovim - Tetris! This plugin is written in Fennel using Olical's project Aniseed for creating the proj

129 Dec 26, 2022
WazirX Portfolio Tracker on your Terminal!

If you have been investing in crypto in India, there is a very good chance that you are using WazirX. If you are using WazirX, then you definitely know that there is no P&L report, no green arrows no

Raunit 15 Jan 10, 2022
Ipylivebash - Run shell script in Jupyter with live output

ipylivebash ipylivebash is a library to run shell script in Jupyter with live ou

Ben Lau 6 Aug 27, 2022
Personal and work vim 8 configuration with submodules

vimfiles Windows Vim 8 configuration files based on the recommendations of Ruslan Osipov, Keep Your vimrc file clean and The musings of bluz71. :help

1 Aug 27, 2022