Skip to main content

Miao

Lines of code PyPI PyPI - License PyPI - Format


Miao Logo

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)

Source distribution for miao-make 20230627
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)

Table of built distributions (wheels) for miao-make 20230627
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page