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
Metadata
Release files for miao-make 20230627
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| miao-make-20230627.tar.gz | 8.7 kB | Without provenance | Details for miao-make-20230627.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| miao_make-20230627-py3-none-any.whl | Python 3 | none | any | Details for miao_make-20230627-py3-none-any.whl |
Total release size: 16.4 kB
Release files / miao-make-20230627.tar.gz
| Download URL | miao-make-20230627.tar.gz |
|---|---|
| Size | 8.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ee24ebdb883f66468929ee0035de1c8f35c3cf70c1f1ba63acaee50d513e30f
|
|
BLAKE2b-256 checksum How to use checksums |
7a4eeda03c46b7b246cddf25f57562cb3a2f5d13bbfe3fc329782d32637af41c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|
Release files / miao_make-20230627-py3-none-any.whl
| Download URL | miao_make-20230627-py3-none-any.whl |
|---|---|
| Size | 7.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
27bd412485f2f96cb8d4b340c1523e24fabcbf2106e784986ca17c6c0986cdf4
|
|
BLAKE2b-256 checksum How to use checksums |
a2ec494599876963661d2bc3db9089049e08c75795487c0faf916b1d6a0b64a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|
Security for miao-make 20230627
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.