Cargo-like project management tool for working with CMake
Project description
Miao
A Python script for generating CMake files, with a user-friendly, Cargo-like command line interface. (UNDER CONSTRUCTION)
TODO:
- ☑ miao new
- ☑ --language
- ☑ --standard
- ☐ --lib
- ☑ miao add
- ☑ --include_dirs
- ☑ --lib_dirs
- ☑ miao build
- ☑ miao run
- ☑ miao clean
- ☑ miao help
- ☐ miao init
- ☐ --lib
- ☐ miao remove
- ☐ miao config
- ☐ --default_language
- ☐ --default_language --standard
- ☐ --default_include_dirs
Installation
# The PyPI version may be outdated.
# Please consider using `git clone` to
# obtain the latest version.
pip3 install miao-make
Usage
miao help
$ miao help
Miao Version 20230626
add Add dependencies.
Use `--include_dirs` to add header file directories.
Use `--lib_dirs` to add library file directories.
build Compile the current project.
clean Remove the build directory.
config ...
find_project_root
help Print help.
init
new Create a new project.
remove ...
run Run the current project.
version Print version info and exit.
miao new
- Creating a new project
# Create a new project
$ miao new my_project
Created my_project
Added CMakelists.txt
(debug) `
set(CMAKE_CXX_STANDARD 17)
file(GLOB_RECURSE SOURCES "src/*.cpp")
`
Created `src/` directory
Added main.cpp
Created `build/` directory
# The `--language` and `--standard` flags
$ miao new 'hello world' --language cpp --standard 20
Created hello_world
Added CMakelists.txt
(debug) ```set(CMAKE_CXX_STANDARD 20)
file(GLOB_RECURSE SOURCES "src/*.cpp")```
Created `src/` directory
Added main.cpp
Created `build/` directory
miao add
- Adding libraries
Configure header files with miao add LIB --include_dirs=DIR1,DIR2
$ cd my_project/
$ miao add ncurses --include_dirs=$(brew --prefix ncurses)/include
Adding header directories ['/usr/local/opt/ncurses/include']
Adding ('ncurses',) for `my_project`
and library files with --lib_dirs=
$ miao new tui && cd tui/ # Created project called `tui`
$ miao add ftxui-dom ftxui-screen ftxui-component --include_dirs=/usr/local/include,/usr/local/include/ftxui --lib_dirs=/usr/local/lib
Adding ('ftxui-dom', 'ftxui-screen', 'ftxui-component') for `tui`
CMakeLists.txt
find_library(ftxui-dom NAMES ftxui-dom PATHS /usr/local/lib)
find_library(ftxui-screen NAMES ftxui-screen PATHS /usr/local/lib)
find_library(ftxui-component NAMES ftxui-component PATHS /usr/local/lib)
target_include_directories(tui.exe PRIVATE /usr/local/include /usr/local/include/ftxui)
target_link_libraries(tui.exe ${ftxui-dom} ${ftxui-screen} ${ftxui-component})
- Run
$ miao run
root: /Users/4nji/dev/python/miao/src/my_project
pwd: /Users/4nji/dev/python/miao/src/my_project
Entering /Users/4nji/dev/python/miao/src/my_project/build
-- The C compiler identification is AppleClang 13.0.0.13000029
-- The CXX compiler identification is AppleClang 13.0.0.13000029
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (1.5s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/4nji/dev/python/miao/src/my_project/build
Success Successfully executed the command: ['cmake', '/Users/4nji/dev/python/miao/src/my_project']
[ 50%] Building CXX object CMakeFiles/my_project.exe.dir/src/main.cpp.o
[100%] Linking CXX executable my_project.exe
[100%] Built target my_project.exe
Success Successfully executed the command: ['make']
===========================2023-06-24 19:56:20.228994==========================
Running /Users/4nji/dev/python/miao/src/my_project/build/my_project.exe
===============================================================================
Hello, world!
Process finished with exit code 0
- Cleaning up
$ miao clean
Removing /Users/Me/dev/python/miao/src/hello_world/build
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
miao-make-20230627.tar.gz
(8.7 kB
view details)
Built Distribution
File details
Details for the file miao-make-20230627.tar.gz
.
File metadata
- Download URL: miao-make-20230627.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ee24ebdb883f66468929ee0035de1c8f35c3cf70c1f1ba63acaee50d513e30f |
|
MD5 | 67074a48e16d27c30bf7158308ea02db |
|
BLAKE2b-256 | 7a4eeda03c46b7b246cddf25f57562cb3a2f5d13bbfe3fc329782d32637af41c |
File details
Details for the file miao_make-20230627-py3-none-any.whl
.
File metadata
- Download URL: miao_make-20230627-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27bd412485f2f96cb8d4b340c1523e24fabcbf2106e784986ca17c6c0986cdf4 |
|
MD5 | e38294e9e167b21eb08bfa288ba7910a |
|
BLAKE2b-256 | a2ec494599876963661d2bc3db9089049e08c75795487c0faf916b1d6a0b64a7 |